顺序表的基本功能(C语言实现)
**
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
#define TRUE 1
#define OK 1
#define FALSE 0
#define ERROR 0
#define OVERFLOW -1
typedef int Elemtype;
typedef int Status;
typedef struct{
Elemtype *elem;
int length;
}sqlist;
Status Ininlist_sq(sqlist &L){ //初始化
L.elem =(Elemtype *)malloc(sizeof(Elemtype)*(MAXSIZE));
if(!L.elem )
{exit(OVERFLOW);
printf("初始化失败");
}
else
printf("初始化成功\n");
L.length =0;
}
Status Destorylist_sq(sqlist &L){ //销毁
if(L.elem )
free(L.elem );
printf("销毁成功\n");
}
Status Clearlist_sq(sqlist &L){ //清空
if(L.elem )
L.length =0;
printf("清空成功\n");
}
Status GetElem_sq(sqlist L){ //求线性表长度
return L.length;
}
Status Emptylist_sq(sqlist L){ //判断是否为空
if(L.length ==0)
{ printf("线性表为空\n");
return 1;
}
else
{
printf("线性表不为空");
return 0;
}}
Status Getlist_sq(sqlist L,int i,Elemtype &e){ //顺序表取值
if(i<1||i>L.length )
return ERROR;
e=L.elem[i-1];
return e;
}
Status LocateElem_sq(sqlist L,Elemtype e){ //线性表查找
int i;
for(i=0;i<L.length;i++)
if(L.elem[i]==e )
return i+1;
printf("查找成功\n");
return 0;
}
Status Insertlist_sq(sqlist &L,int i,Elemtype e){ //插入 线性表
if(i<1||i>L.length+1)
return ERROR;
if(L.length==MAXSIZE)
return ERROR;
int j;
for(j=L.length-1;j>=i-1;j--)
L.elem[j+1]=L.elem[j];
L.elem[i-1]=e;
L.length++;
return OK;
}
Status Displaylist_sq(sqlist L){ //显示 线性表
int i;
for(i=0;i<=L.length-1;i++)
printf("%d\n",L.elem[i]);
printf("显示成功\n");
}
Status Deletelist_sq(sqlist &L,int i){ //删除 线性表
if(i<1||i>L.length ) return ERROR;
for(int j=i;j<=L.length-1;j++)
L.elem[i-1]=L.elem[i];
L.length --;
return OK;
printf("删除数据成功\n");
}
int main()
{
Status i,e,n,m,j,x;
sqlist L;
Ininlist_sq(L); //初始化
printf("***********************\n");
printf("请问,您要输入几条数据?\n");
scanf("%d",&n);
printf("***********************\n");
printf("请一条一条的输入数据!\n");
for(i=1;i<=n;i++)
{scanf("%d",&e);
Insertlist_sq(L,i,e);} //插入
printf("***********************\n");
Displaylist_sq(L); //显示
printf("***********************\n");
printf("请输入您要删除第几条数据\n");
scanf("%d",&x);
Deletelist_sq(L,x); //删除
Displaylist_sq(L); //显示
printf("***********************\n");
e=GetElem_sq(L); //求线性表长度
printf("线性表长度为:%d\n",e);
printf("***********************\n");
printf("请输入您要查找第i个数据\n");
scanf("%d",&i);
m=Getlist_sq(L,i,e); //顺序表取值
printf("第%d个数据为:%d\n",i,m);
printf("***********************\n");
printf("请输入您要查找的数据\n");
scanf("%d",&e);
j=LocateElem_sq(L,e); //线性表查找
printf("%d数据是第%d条数据\n",e,j);
printf("***********************\n");
Clearlist_sq(L); //清空
printf("***********************\n");
Emptylist_sq(L); //判断是否为空
printf("***********************\n");
Destorylist_sq(L); //销毁
printf("***********************\n");
}
运行程序结果