实现线性表创建、插入、删除、查找和显示线性表中元素等基本操作
#include "stdio.h"
#include "malloc.h"
#define MAXSIZE 200 //线性表允许的最大长度
#define datatype int
typedef struct //定义线性表的结构
{ datatype data[MAXSIZE]; //表示线性表(a1,a2,….,an)
int last; //last表示线性表的实际长度
} SeqList;
SeqList *init_SeqList( )
{
SeqList *L;
L=(SeqList *)malloc(sizeof(SeqList));
if(!L)
return NULL;
else
{
L->last=0;
return L;
}
}
int Insert_SeqList(SeqList *L,int i,datatype x)
{
int j;
if(i<1||i>L->last+1)
return 0;
if(L->last>=MAXSIZE)
{
return 0;
}
for(j=L->last;j>=i-1;--j)
L->data[j+1]=L->data[j];
L->data[i-1]=x;
L->last++;
return 1;
}
int Delete_SeqList(SeqList *L,int i)
{
int j;
if(i<0||i>L->last)
return 0;
if(L->last<=0)
{
return 0;
}
for(j=i;j<=L->last-1;++j)
L->data[j-1]=L->data[j];
L->last--;
return 1;
}
int Location_SeqList(SeqList *L, datatype x) // 查找元素x
{
int i=1;
while ( i <=L->last && L->data[i] != x )
i++;
if ( i <=L->last )
return (i);
else
return (0);
}
void print(SeqList *L) //打印线性表
{
int i;
for(i=0;i<L->last;i++)
printf("%4d",L->data[i]);
}
void main()
{ SeqList *L;
int i,j,k;
datatype x;
do
{ printf("\n\n\n\n");
printf("\t\t\t 线性表子系统\n");
printf("\t\t*******************************\n");
printf("\t\t* 1----初始化表 *\n");
printf("\t\t* 2----插 入 *\n");
printf("\t\t* 3----删 除 *\n");
printf("\t\t* 4----查 找 *\n");
printf("\t\t* 5----显 示 *\n");
printf("\t\t* 0----返 回 *\n");
printf("\t\t*******************************\n");
printf("\t\t 请选择菜单项(0-5):");
scanf("%d",&k);getchar();
switch(k)
{
case 1:
L=init_SeqList( ); //初始化线性表
break;
case 2: //在线性表第i位置处插入值为X的元素
printf("\n 请输入插入的位置i和数据X(输入格式:i,X):");
scanf("%d,%d",&i,&x);
Insert_SeqList(L,i,x);
break;
case 3: //删除线性表中值为X的元素
printf("\n 请输入要删除元素的位置i:");
scanf("%d",&i);
j=Delete_SeqList(L,i);
if (j == 1) printf("删除成功!!");
else printf("删除失败!!");
break;
case 4: //查找线性表中元素值为x的位置
printf("\n 请输入要查找的数值X:");
scanf("%d",&x);
j=Location_SeqList(L,x);
if (j != -1 )
{ print(L);printf("中值为X所在的位置是 %d ",j);}
else
printf("线性表中无此元素!!\n");
break;
case 5: //输出线性表
printf("\n线性表的顺序存储为:");
print(L);
}
}while(k!=0);
}
说明:1.这个是鄙人大二期间所学,所以模板很多人都用过,如有雷同,不是偶然。
2.发博客只为了纪念所学所感,于此而已。