题目:顺序表的实现
一、实验题目
顺序表的实现
二、实验目的
⑴掌握线性表的顺序存储结构;
⑵验证顺序表及其基本操作的实现;
⑶理解算法与程序的关系,能够将顺序表算法转换为对应的程序。
三、实验内容与实现
⑴建立含有若干个元素的顺序表;
⑵对已建立的顺序表实现插入、删除、查找等基本操作。
实验实现
#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-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位\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.会灵活的使用函数。