一、代码
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{
ElemType elem[MAXSIZE];
int length;
}SqList;
void outlin(SqList s);
void create(SqList *v);
void insert(SqList *v,int i,int x);
void deleter(SqList *v,int i);
int main()
{
SqList pz;
int i,y,cord;
do
{
printf("\n 主菜单\n");
printf(" 1 建立线性表\n");
printf(" 2 插入一个元素\n");
printf(" 3 删除一个元素\n");
printf(" 4 结束程序\n");
printf("-------------------------\n");
printf("请输入您的选择(1,2,3,4) :");
scanf("%d",&cord);
switch(cord)
{
case 1:
{
create(&pz);
outlin(pz);
}break;
case 2:
{
printf("\n 请输入插入的位置 i:");
scanf("%d",&i);
printf("\n 插入的数据 x:");
scanf("%d",&y);
insert(&pz,i,y);
outlin(pz);
}break;
case 3:
{
printf("\n 请输入删除的位置 i:");
scanf("%d",&i);
deleter(&pz,i);
outlin(pz);
}break;
case 4:exit(0);
}
}while(cord<=4);
return 0;
}
void outlin(SqList s)
{
system("cls");
int i;
printf("表信息:\n");
printf("位置 元素值 物理地址");
for(i=1;i<=s.length;i++)
printf("\n%2d %6d %13d",i,s.elem[i-1],&s.elem[i-1]);
printf("\n-------------------------");
}
void insert(SqList *v,int i,ElemType x)
{
int j;
if((i<0)||(i>v->length+1))
{
// system("cls");
printf("\n Error!您输入的位置有误,请重新输入\n");
system("pause");
}
else
{
for(j=v->length;j>=i;j--)
v->elem[j]=v->elem[j-1];
v->elem[j]=x;
v->length++;
printf("\n数据插入成功!\n"); system("pause");
}
}
void deleter(SqList *v,int i)
{
int j;
if((i<0)||(i>v->length)){
printf("\n No exit!\n");
system("pause");
}
else
{
for(j=i;j<v->length;j++)
v->elem[j-1]=v->elem[j];
v->length--;
printf("\n成功删除%d位置上的数据\n",i);
system("pause");
}
}
void create(SqList *v)
{
int i;
printf("\n 请输入表长n=");
scanf("%d",&(v->length));
printf("\n 请输入表数据:\n");
for(i=0;i<v->length;i++)
{
printf("\n data%d=",i+1);
scanf("%d",&(v->elem[i]));
}
printf("\n表创建成功\n");system("pause");
}
二、执行效果
欢迎修改指正~