代码展示
#include<stdio.h>
#include<malloc.h>
#define MaxSize 100
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize]; //存放数据表元素
int length; //存放顺序表的长度
/* data */
}SqList;
void CreateList(SqList *& L,ElemType a[],int n){ //创建顺序表
L =(SqList *)malloc(sizeof(SqList));
for(int i=0;i<n;i++){
L->data[i]=a[i];
}
L ->length =n;
}
void InitList(SqList *& L){ //初始化顺序表
L =(SqList *)malloc(sizeof(SqList));
L ->length =0;
}
void DestoryList(SqList *&L){ //释放顺序表
free(L);
}
bool ListEmpty(SqList *& L){ //判断顺序表是否为空
return (L->length ==0);
}
int ListLength(SqList *L){ //求顺序表的长度
return L->length;
}
void DisList(SqList *L){ //输出顺序表
//printf("调用输出\n");
for(int i=0;i<L->length;i++){
printf(" %c",L ->data[i]);
}
printf("\n");
}
bool GetElem(SqList *L,int i,ElemType &e){ //求线性表第i个元素
if(i<1||i>L->length){
return false; //判断i是否合理
}
e =L->data[i-1];
return true;
}
int LocateElem(SqList *L,ElemType e) { //求e的位置
int i=0;
while (i<L->length &&L->data[i]!=e)
{
i++;
}
if(i>=L->length){
return 0;
}else {
return i+1;
}
}
bool ListInsert(SqList *&L,int i,ElemType e){ //插入e
int j;
if(i<1||i>L->length+1||L->length ==MaxSize){
return false;
}
i--;
for(j =L->length;j>i;j--){
L->data[j]=L->data[j-1];
}
L->data[i]=e;
L->length++;
return true;
}
bool ListDelete(SqList *&L,int i,ElemType e){ //删除第I个值
int j;
if(i<1||i>L->length){
return false;
}
i--;
e=L->data[i];
for(j=i;j<L->length;j++){
L->data[j]=L->data[j+1];
}
L ->length--;
return true;
}
int main(){
SqList *L;
ElemType e;
printf ("\n");
printf("顺序表的基本运算如下\n");
printf(" (1)初始化顺序表\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:\n");
DisList(L);
printf(" (4)顺序表L的长度:%d\n ",ListLength(L));
printf(" (5)顺序表L为%s\n",(ListEmpty(L)?"空":"非空"));
GetElem(L,3,e);
printf(" (6)顺序表的第3个元素的:%c\n",e);
printf(" (7)元素a的位置:%d\n",LocateElem(L,'a'));
printf(" (8)在第4个元素位置上插入f元素\n");
ListInsert(L,4,'F');
printf(" (9)输出顺序表L:");
DisList(L);
printf(" (10)删除顺序表第3个元素\n");
ListDelete(L,3,e);
printf(" (11)输出顺序表:\n");
DisList(L);
printf(" (11)释放顺序表\n");
DestoryList(L);
return 1;
}