顺序表的基本操作
void main()
{
char a[5]={'a','b','c','d','e'};
int n=5;
char f='f',b='a',e;
SqList sq;
InitList(sq); //初始化表
CreateList(sq,a,n); //传入数据
DispList(sq); //输出表
printf("sq.length=%d\n",ListLength(sq)); //输出表长
if(ListEmpty(sq)) //判断是否为空表
printf("sq是空表\n");
else
printf("sq不是空表\n");
printf("a在第%d位\n",LocateElem(sq,b)); //按元素值查找
ListInsElem(sq,f,4); //在第4个位置上插入f元素
DispList(sq); //输出表
printf("\n");
DelElem(sq,3,e); //删除第三个元素
DispList(sq); //输出表
}
这是头文件
1.h
#include<stdio.h>
const MaxSize=100;
typedef struct SqList
{
char elem[MaxSize];
int length;
}SqList,*PSqList;
SqList sq;
void InitList(SqList &sq) //初始化线性表
{
sq.length=0;
}
void CreateList(SqList &sq,char a[],int n) //建立表
{
int i;
for(i=0;i<n;i++)
sq.elem[i]=a[i];
sq.length=n;
}
int ListLength(SqList sq) //求表长
{
return(sq.length);
}
char GetElem(SqList sq,int i) //求第i个元素
{
if(i<1||i>sq.length)
return 0;
return sq.elem[i-1];
}
int LocateElem(SqList sq,char x) //按元素值查找
{
int i=0;
while(i<sq.length&&sq.elem[i]!=x)
i++;
if(i>sq.length)
return 0;
else return i+1;
}
int ListInsElem(SqList &sq,char x,int i) //插入元素在第i个位置
{
int j;
if(i<1||i>sq.length+1)return 0;
for(j=sq.length;j>=i;j--)
sq.elem[j]=sq.elem[j-1];
sq.elem[i-1]=x;
sq.length++;
return 1;
}
int DelElem(SqList &sq,int i,char &e) //删除第i个元素
{
int j;
if (i<1||i>sq.length)return 0;
e=sq.elem[i];
for(j=i;j<sq.length;j++)
sq.elem[j-1]=sq.elem[j];
sq.length--;
return 1;
}
int ListEmpty(SqList &sq) //判断表是否为空
{
return(sq.length==0);
}
void DispList(SqList sq) //输出表
{
int i;
if(ListEmpty(sq))return;
for(i=0;i<sq.length;i++)
printf("%c\t",sq.elem[i]);
}