//线性表
#include<stdlib.h>
#include<curses.h>
#include<stdio.h>
#define maxsize 1024
typedef int datatype;
typedef struct {
datatype data[maxsize];
int last;
}sequenlist;
void init(sequenlist *L)
{
// L=(sequenlist *)malloc(sizeof(sequenlist));
L->last=0;
}
int insert(sequenlist *L,datatype x,int i)
{
int j;
if(L->last>=maxsize-1)
{ printf("overflow/n");return 0;}
else if(i<1 ||i>L->last+2)
printf("插入位置非法/n");
else
{
for(j=L->last;j>=i-1;j--)
L->data[j+1]=L->data[j];
L->data[i-1]=x;
L->last=L->last+1;
}
return 1;
}
int delete(sequenlist *L,int i)
{
if(i<1 || i>L->last+1)
{ printf("删除元素非法/n"); return 0;}
else
{
for(int j=i;j<L->last;j++)
L->data[j]=L->data[j+1];
L->last=L->last-1;
}
return 1;
}
void display(sequenlist *L)
{
for(int i=0;i<L->last;i++)
printf("%d ",L->data[i]);
}
/*
int main()
{
sequenlist L;
init(&L);
insert(&L,5,1);
insert(&L,3,2);
display(&L);
delete(&L,3);
display(&L);
return 0;
}
*/
main()
{
sequenlist *L;
int i,ch,n;
while(1)
{
printf("/n 请选择:");
printf("/n(1) 输入顺序表:");
printf("/n(2) 插入数据");
printf("/n(3) 删除数据");
printf("/n(4) 结束/n");
ch=getchar();
switch(ch){
case '1':printf("/n请输入顺序表中数据的个数n=");
scanf("%d",&n);
printf("/n");
L=(sequenlist *)malloc(sizeof(sequenlist));
for(i=0;i<n;i++)
{
printf("/n请输入插入顺序表中第%d个数据的值",i+1);
scanf("%d",&L->data[i]);
}
L->last=n-1;
printf("/n输入顺序表数据为");
for(i=0;i<=L->last;i++)
printf("%d ",L->data[i]);
printf("/n");
break;
case '2':printf("/n请输入插入顺序表中的数据");
scanf("%d",&n);
printf("/n请输入插入顺序表中的位置");
scanf("%d",&i);
printf("/n");
if(insert(L,n,i))
{
printf("/n插入后的数据顺序表为:");
for(i=0;i<=L->last;i++)
printf("%d ",L->data[i]);
printf("/n");
}
break;
case '3':printf("/n请输入删除数据的位置");
scanf("%d",&i);
printf("/n");
if(delete(L,i))
{
printf("/n删除后的数据顺序表为:");
for(i=0;i<L->last;i++)
printf("%d ",L->data[i]);
printf("/n");
}
break;
case '4':return ;
}
}
}
坚持每天至少一百行。练习数据结构线性表
最新推荐文章于 2024-06-26 11:26:55 发布