#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef struct
{
int data[MAXSIZE];
int last;
}SeqList;
void insert_list(SeqList *l,int pos,int data)
{
int i;
if(l->last>MAXSIZE-1)
{
printf("空间溢出!");
}
else if(pos<1||pos>l->last+2)//插入前表长为last+1,插入后则为last+2
{
printf("插入位置非法!");
}
else{
for(i=l->last;i>=pos-1;i--)
{
l->data[i+1]=l->data[i];
}
l->data[pos-1]=data;
l->last++;
}
}
void delete_list(SeqList *l,int pos)
{
for(int i=pos;i<=l->last;i++)
{
l->data[i-1]=l->data[i];
}
l->last-=1;
}
int main(void)
{
int choice,num,data,pos,i;
SeqList l;
while(true)
{
printf(" 线性操作表练习\n");
printf("1:创建一个数据表\n");
printf("2:插入数据\n");
printf("3:删除数据\n");
printf("4:打印数据表中元素\n");
printf("5:退出程序\n");
printf("请输入选项:") ;
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("请输入你要创建的元素个数:");
scanf("%d",&num);
if(num>MAXSIZE)
{
printf("超出个数!");
break;
}
printf("录入数据开始:");
for(i=0;i<num;i++)
{
scanf("%d",&l.data[i]);
}
l.last=num-1;
break;
case 2:
printf("请输入插入的元素值和位置:");
scanf("%d %d",&data,&pos);
insert_list(&l,pos,data);
break;
case 3:
printf("请输入你要删除元素所处的位置:");
scanf("%d",&pos);
if(pos<1||pos>l.last+1)
{
printf("输入的位置无效");
break;
}
else
{
delete_list(&l,pos);
}
break;
case 4:
printf("数据表为:");
for(i=0;i<l.last+1;i++)
{
printf("%d ",l.data[i]);
}
printf("\n元素的个数为:%d ",l.last+1);
break;
case 5:
return 0;
break;
default:
printf("没有这个选项!");
break;
}
}
}
//由于很久没有接触过c了哈,会出现不少错误,本代码仅供参考
【重回C】c语言之顺序表的部分基本操作
最新推荐文章于 2024-06-29 14:38:00 发布