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