其中函数包括如下
1. Initlist(sqlist *&l):初始化顺序表l.
2. Destroylist(sqlist *l):释放顺序表l.
3. Listempty(sqlist *l):判断顺序表l是否为空表.
4. Listlength(sqlist *l):返回顺序表l的元数个数.
5. Displist(sqlist *l):输出顺序表l.
6. Getelem(sqlist *l,int I,elemtype &e):获取顺序表l 中第i个元数.
7. Locateelem(sqlist *l,elemtype e):在顺序表l中查找元数e.
8. Listinsert(sqlist *&l,int I,elemtype e):在顺序表l中第i个位置上插入元数e.
9. Listdelete(sqlist *&l,int I,elemtype &e):顺序表l中删除第i个元数。
具体代码实现和结果如下:
#include<stdio.h>
#include<malloc.h>
#define maxsize 50
typedef char elemtype;
typedef struct
{elemtype elem[maxsize];
int length;
}sqlist;//顺序表类型定义
void initlist(sqlist *&l) //初始化顺序表l
{
l=(sqlist * )malloc(sizeof(sqlist));
l->length=0;
}
void destroylist(sqlist *l)//释放顺序表l
{
free(l);
}
int listempty(sqlist *l)//判断顺序表l是否为空表
{
return(l->length==0);
}
int listlength(sqlist *l)//返回顺序表l的元数个数
{
return(l->length);
}
void displist(sqlist *l)//获取顺序表l中第i个元数
{
int i;
if(listempty(l))return;
for(i=0;i<l->length;i++)
printf("%c",l->elem[i]);
printf("/n");
}
int getelem(sqlist *l,int i,elemtype &e)//在顺序表中查找第i个元数
{
if(i<1||i>l->length)
return 0;
e=l->elem[i-1];
return 1;
}
int locateelem(sqlist *l,elemtype e)//查找元数e
{
int i=0;
while(i<l->length&&l->elem[i]!=e)
i++;
if(i>=l->length)
return 0;
else
return i+1;
}
int listinsert(sqlist *l,int i,elemtype e)
//在第i个位置上插入元数e
{
int j;
if(i<1||i>l->length+1)
return 0;
i--;//将顺序表位序转化为elem下标
for(j=l->length;j>i;j--)//将elem[i]及后面元数后移一个位置
l->elem[j]=l->elem[j-1];
l->elem[i]=e;
l->length++;//顺序表长度增1
return 1;
}
int listdelete(sqlist *&l,int i,elemtype &e)
//顺序表l中删除第i个元数
{
int j;
if(i<1||i>l->length)
return 0;
i--;//将顺序表位序转化为elem下标
e=l->elem[i];
for(j=i;j<l->length-1;j++)
l->elem[j]=l->elem[j+1];
l->length-1;
return 1;
}
void main()
{
sqlist *l;
elemtype e;
printf("(1)初始化顺序表l/n");
initlist(l);
printf("(2)依次采用尾插法插入a,b,c,d,e元素/n");
listinsert(l,1,'a');
listinsert(l,2,'b');
listinsert(l,3,'c');
listinsert(l,4,'d');
listinsert(l,5,'e');
printf("(3)输出顺序表l:");
displist(l);
printf("(4)顺序表l长度=%d/n",listlength(l));
printf("(5)顺序表l为%s/n",(listempty(l)?"空":"非空"));
getelem(l,3,e);
printf("(6)顺序表l的第3个元数=%c/n",e);
printf("(7)元数a的位置=%d/n",locateelem(l,'a'));
printf("(8)在第4个元数的位置上插入f元数/n");
listinsert(l,4,'f');
printf("(9)输出顺序表l:");
displist(l);
printf("(10)删除l的第3个元数/n");
listdelete(l,3,e);
printf("(11)输出顺序表l:");
displist(l);
printf("(12)释放顺序表l/n");
destroylist(l);
}