散列查找顺序表实现实验报告

  题目:顺序表的实现

  一、实验题目

  顺序表的实现

 二、实验目的

 ⑴ ⑴ 掌握线性表的顺序存储结构; ⑵ ⑵ 验证顺序表及其基本操作的实现; ⑶ ⑶ 理解算法与程序的关系,能够将顺序表算法转换为对应的程序。

 三、实验内容与实现

 ⑴ ⑴ 建立含有若干个元素的顺序表; ⑵ ⑵ 对已建立的顺序表实现插入、删除、查找等基本操作 。

 。

 实验实现

 #include<stdio.h>

 #include<memory.h>

 int a[10000];

 int arrlong()

 { {

 int j;

 for(j=0;j<12;j++)

 if(a[j]==0)

 break;

 return j;

  } }

 int Insect(int n,int s)

 //// 插入

 { {

 int j;

 for(j=0;j<10000;j++)

 if(a[j]==0)

 break;

  printf(" 要操作的元素\ \ n");

 for(int i=0;i<j;i++)

 printf("%d ",a[i]);

 printf("\ \ n");

 for(int i=j;i>n n- - 1;i --) )

 a[i+1]=a[i];

 a[n]=s;

 for(int k=0;k<j+1;k++)

 printf("%d ",a[k]);

 printf("\ \ n");

 } }

 int Search(int p)

 // 查找

 { {

 int j,h;

 for(j=0;j<12;j++)

 { {

 if(a[j]==0)

 break;

  } }

 for(h=0;h<j;h++)

 { {

 if(a[h]==p)

 { {

 printf(" 查找到的数在第d %d 位\ \ n",h+1);

 break;

 } }

 } }

 if(h==j)

 printf(" 查无此数\ \ n");

 } }

 int Delate(int g,int q)

 // 删除

 { {

 int j;

 g=g- - 1;

 for(int j=g;j<12;j++)

 a[j]=a[j+1];

 for(q =0;q<12;q++)

 { {

 if(a[q]==0)

 break;

 } }

 for(int i=0;i<q;i++)

 printf("%d ",a[i]);

  printf("\ \ n");

 }

  int main()

 {

 int y,c;

 printf("

 菜单\ \ n");

 printf(" -------------------------------------------------\ \ n");

 printf("0

 建表\ \ n1

 插入\ \ n2

  查找\ \ n3

  删除\ \ n4

 退出\ \ n");

 printf(" -------------------------------------------------\ \ n");

 while(scanf("%d ",&y)!=EOF)

 { {

 int n,x,s;

 if(y==0)

 { {

 memset(a,0,sizeof(a));

 printf(" 请输入元素的个数: :\ \ n");

 scanf("%d",&c);

 printf(" 请输入数据: :\ \ n");

 for(int i = 0;i < c;i++)

 scanf("%d",&a[i]);

 } }

 else if(y==1)

 { {

 int L;

 printf(" 请输入插入的第几位\ \ n");

  scanf("%d",&n);// 输入

 L=arrlong();

 if(n<=L)

 { {

 printf(" 请输入插入的数字\ \ n");

 scanf("%d",&s);

 Insect(n,s);

  } }

 else

 { {

 printf(" 输入有误\ \ n");

 continue;

 } }

 }

  else if(y==2)

 { {

 int p;

 printf(" 请输入要查找的数字\ \ n");

  scanf("%d ",&p);

 Search(p);

 }

  else if(y==3)

 { {

 int g,q,L;

 printf(" 请输入要删除数的位置\ \ n");

 scanf("%d",&g);

 L=arrlong();

 if(L>=g)

 { {

 Delate(g,q);

 } }

 else

 { {

 printf(" 输入有误\ \ n");

 printf("

 菜单\ \ n");

 printf (" -------------------------------------------------\ \ n");

 printf("0

 建表\ \ n1

 插入\ \ n2

  查找\ \ n3

  删除\ \ n4

 退出\ \ n");

 printf(" -------------------------------------------------\ \ n");

 continue;

 } }

 } }

 else if(y==4)

 break;

  else

 { {

 printf (" 输入有误\ \ n");

 printf("

 菜单\ \ n");

 printf(" -------------------------------------------------\ \ n");

 printf("0

 建表\ \ n1

 插入\ \ n2

  查 找\ \ n3

  删除\ \ n4

 退出\ \ n");

 printf(" -------------------------------------------------\ \ n");

 continue;

  } }

 printf("

 菜单\ \ n");

 printf(" -------------------------------------------------\ \ n");

 printf("0

 建表\ \ n1

 插入\ \ n2

  找 查 找 \ \ n3

  删除\ \ n4

 退出\ \ n");

 printf(" -------------------------------------------------\ \ n");

 }

 } }

 建立顺序表:

 插入操作:

 查找操作:

 删除操作:

 插入数据超出顺序表范围 :

 查找不到输入数据:

 删除数据超出顺序表范围:

  四、实验心得

 1.掌握了为数组赋值的方法,深刻理解了数组的含义 2.掌握了为数组排序的方法。

 3.正确理解 for 循环与数组的共同使用方式 4.会灵活的使用函数