用c++编写一个程序,实现顺序表的各种基本运算,本实验的顺序表元素的类型为char,在主函数中调用顺序表的基本操作完成如下操作: (1)初始化顺序表L (2)依次插入a、b、c、d、e (3)输出顺序表L (4)输出顺序表L的长度 (5)判断顺序表L是否为空 (6)输出顺序表的第3个元素 (7)输出元素a的逻辑位置 (8)在第4个元素位置上插入元素f (9)输出顺序表L (10)删除L的第3个元素 (11)输出顺序表L (12)释放顺序表L
时间: 2023-05-30 13:02:35 浏览: 119
用C++编写的顺序表基本操作
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100 //定义顺序表最大容量
typedef struct {
char data[MAXSIZE]; //存放元素的数组
int length; //当前长度
} SqList;
//初始化顺序表
void InitList(SqList *L) {
L->length = 0;
}
//插入元素
int ListInsert(SqList *L, int i, char e) {
if(i < 1 || i > L->length + 1) {
return 0; //插入位置不合法
}
if(L->length >= MAXSIZE) {
return 0; //顺序表已满
}
int j;
for(j = L->length; j >= i; j--) {
L->data[j] = L->data[j-1]; //将第i个元素及之后的元素后移
}
L->data[i-1] = e;
L->length++;
return 1;
}
//输出顺序表
void PrintList(SqList L) {
int i;
for(i = 0; i < L.length; i++) {
printf("%c ", L.data[i]);
}
printf("\n");
}
//获取顺序表长度
int GetLength(SqList L) {
return L.length;
}
//判断顺序表是否为空
int IsEmpty(SqList L) {
if(L.length == 0) {
return 1;
} else {
return 0;
}
}
//获取元素
int GetElem(SqList L, int i) {
if(i < 1 || i > L.length) {
return 0; //位置不合法
}
return L.data[i-1];
}
//查找元素
int LocateElem(SqList L, char e) {
int i;
for(i = 0; i < L.length; i++) {
if(L.data[i] == e) {
return i+1;
}
}
return 0; //查找失败
}
//插入元素
int ListInsert(SqList *L, int i, char e) {
if(i < 1 || i > L->length + 1) {
return 0; //插入位置不合法
}
if(L->length >= MAXSIZE) {
return 0; //顺序表已满
}
int j;
for(j = L->length; j >= i; j--) {
L->data[j] = L->data[j-1]; //将第i个元素及之后的元素后移
}
L->data[i-1] = e;
L->length++;
return 1;
}
//删除元素
int ListDelete(SqList *L, int i) {
if(i < 1 || i > L->length) {
return 0; //删除位置不合法
}
int j;
for(j = i; j < L->length; j++) {
L->data[j-1] = L->data[j]; //将第i个元素之后的元素前移
}
L->length--;
return 1;
}
//释放顺序表空间
void DestroyList(SqList *L) {
free(L);
}
int main() {
SqList *L = (SqList *)malloc(sizeof(SqList));
InitList(L);
ListInsert(L, 1, 'a');
ListInsert(L, 2, 'b');
ListInsert(L, 3, 'c');
ListInsert(L, 4, 'd');
ListInsert(L, 5, 'e');
printf("顺序表L:");
PrintList(*L);
printf("顺序表L的长度:%d\n", GetLength(*L));
printf("顺序表L是否为空:%d\n", IsEmpty(*L));
printf("顺序表的第3个元素:%c\n", GetElem(*L, 3));
printf("元素a的逻辑位置:%d\n", LocateElem(*L, 'a'));
ListInsert(L, 4, 'f');
printf("在第4个元素位置上插入元素f后,顺序表L:");
PrintList(*L);
ListDelete(L, 3);
printf("删除L的第3个元素后,顺序表L:");
PrintList(*L);
DestroyList(L);
return 0;
}
阅读全文