文档介绍:实验一顺序存储的线性表维护子系统的实现
实验报告
姓名: 学号: 日期:
一、实验程序
#include <>
#define max 20
int last=20;
int node[max]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
int main()
{
int i,a,x,c,p,flag=0,r,s,u,v;
int find(int x);
void insert(int p,int x);
void delet(int p);
void modify(int p,int x);
printf("please enter number:\n1,查找值为x的点\n2,删除下标为p的节点\n3,修改下标为r的节点的值为s\n4,在下标为u的节点之前插入v\n5,退出系统\n");
do
{
scanf("%d",&a);
switch(a)
{
case 1:
printf("please enter the x\n");
scanf("%d",&x);
c=find(x);
printf("findresult=%d\n",c);
break;
case 2:
printf("please enter the delete pot p\n");
scanf("%d",&p);
printf("before delete\n");
for(i=0;i<=last-1;i++)
printf("%d ",node[i]);
printf("\n");
delet(p);
printf("after delete\n");
for(i=0;i<=last-1;i++)
printf("%d ",node[i]);
printf("\n");
break;
case 3:
printf("please enter the pot r and the value s\n");
scanf("%d %d",&r,&s);
printf("before modify\n");
for(i=0;i<=last-1;i++)
printf("%d ",node[i]);
printf("\n");
modify(r,s);
printf("after modify\n");
for(i=0;i<=last-1;i++)
printf("%d ",node[i]);
printf("\n");
break;
case 4:
printf("please enter the pot p and the value x\n");
scanf("%d %d",&u,&v);
printf("before insert\n");
for(i=0;i<=last-1;i++)
printf("%d ",node[i]);
printf("\n");
insert(u,v);
printf("after insert\n");
for(i=0;i<=last-1;i++)
printf("%d ",node[i]);
printf("\n");
break;
case 5:
flag=1;
break;
default:
printf("input error\n");
}
}while(!flag);
return(0);
}
int find(int x)
{
int k,findi;
int flag2;
k=findi=flag2=0;
while(k<=last-1&&!flag2)
{
if(node[k]==x)
{
findi=k;
flag2=1;
}
else
k++;
}
if(!flag2)
findi=-1;
return(findi);
}
void delet(int p)
{
int j;
if(p>last-1||p<0)
printf("wrong position!\n");
else
{
for(j=p+1;j<=last-1;j++)
node[j-1]=node[j];
last=last-1;
}
}
void modify(int p,int x)
{
node[p]=x;
}
void insert(int p,int x)