#include <stdio.h>
#include <malloc.h>
#define MaxSize 50
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize];
int length;
} SqList;
//创建表
void InitList(SqList *&L)
{
L = (SqList *)malloc(sizeof(SqList));
L->length = 0;
}
//销毁表
void DestroyList(SqList *L)
{
free(L);
}
//判空
int ListEmpty(SqList *L)
{
return(L->length==0);
}
//返回L中数据元素的个数
int ListLength(SqList *L)
{
return(L->length);
}
//输出L表
void DispList(SqList *L)
{
int i;
if (ListEmpty(L)) return;
for (i = 0; i < L->length; i++)
printf("%c", L->data[i]);
printf("\n");
}
//用e返回L中第i个数据元素的值
int GetElem(SqList *L, int i, ElemType &e)
{
if (i<1 || i>L->length)
return 0;
e = L->data[i];
return e;
}
//返回L中第一个与e相同的元素在L中的位置,若不存在,则返回0
int LocateElem(SqList *L, ElemType e)
{
int i = 0;
while (i < L->length && L->data[i] != e) i++;
if (i >= L->length)
return 0;
else
return i + 1;
}
//在L中第i个位置前插入e,L长度+1
int ListInsert(SqList *L, int i, ElemType e)
{
int j;
if (i<1 || i>L->length + 1)
return 0;
i--; //将顺序表位序转化为elem下标
for (j = L->length; j > i; j--) //将data[i]及后面元素后移一个位置
L->data[j] = L->data[j - 1];
L->data[i] = e;
L->length++; //顺序表长度增1
return 1;
}
//删除第i个数据元素,L长度-1
int ListDelete(SqList *L, int i, ElemType &e)
{
int j;
if (i<1 || i>L->length)
return 0;
i--; //将顺序表位序转化为elem下标
e = L->data[i];
for (j = i; j < L->length - 1; j++)
L->data[j] = L->data[j + 1];
L->length--;
return 1;
}
void main()
{
SqList *L;
ElemType e;
//调用InitList()函数初始化顺序表
printf("(1)初始化顺序表L\n");
InitList(L);
//调用ListInsert依次插入abcde元素
printf("(2)依次插入a,b,c,d,e元素\n");
int s = 1,i;
char m = 'a';
for (i=1;i<=5;i++)
{
ListInsert(L, s, m);
s++;
m++;
}
//输出L的长度
printf("(3)L长度=%d\n", ListLength(L));
//判断L是否为空
if (ListEmpty(L))
{
printf("(4)顺序表L为空\n");
}
else
{
printf("(4)顺序表L为非空\n");
}
//输出L的第3个元素
printf("(5)顺序表L的第三个元素=%c\n", GetElem(L,2,e));
//输出元素b的位置
char b='b';
printf("(6)元素b的位置=%d\n", LocateElem(L,b));
//在第4个元素位置上插入f元素
printf("(7)在第4个元素位置上插入f元素\n");
char f = 'f';
ListInsert(L, 4, f);
printf("输出顺序表L:"); DispList(L);
//删除L的第3个元素
printf("(8)删除L的第3个元素\n");
ListDelete(L,3,e);
//输出顺序表 L
printf("(9)输出顺序表L:");
DispList(L);
//释放顺序表L
printf("(10)释放顺序表L");
DestroyList(L);
}
C语言顺序表操作 初始化/插入/判空/长度、元素位置/输出/删除/销毁
最新推荐文章于 2022-05-14 18:07:08 发布