编写一个程序,实现顺序表的初始化函数、插入数据元素函数、删除数据元素函数、查找函数,并编写主程序(main)调用函数实现顺序表的基本操作。 假设顺序表的元素类型ElemType为char,并在此基础上设计一个 主程序,完成如下功能: (1)初始化顺序表L。 (2)依次插入a、b、c、d、e元素。 (3)输出顺序表L。 (4)输出顺序表L长度。 (5)判断顺序表L是否为空。(6)输出顺序表L的第3个元素。 (7)输出元素a的位置。 (8)在第4个元素位置上插人f元素。 (9)输出顺序表L。 (10)删除顺序表L的第3个元素。 (11)输出顺序表L。 (12)释放顺序表L。
时间: 2023-04-06 21:00:26 浏览: 96
C语言 数据结构 顺序表的操作.doc
我可以回答这个问题。以下是顺序表的初始化函数、插入数据元素函数、删除数据元素函数、查找函数的代码:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef char ElemType;
typedef struct {
ElemType data[MAXSIZE];
int length;
} SqList;
void InitList(SqList *L) {
L->length = 0;
}
int ListInsert(SqList *L, int i, ElemType e) {
if (i < 1 || i > L->length + 1) {
return 0;
}
if (L->length >= MAXSIZE) {
return 0;
}
for (int j = L->length; j >= i; j--) {
L->data[j] = L->data[j - 1];
}
L->data[i - 1] = e;
L->length++;
return 1;
}
int ListDelete(SqList *L, int i) {
if (i < 1 || i > L->length) {
return 0;
}
for (int j = i; j < L->length; j++) {
L->data[j - 1] = L->data[j];
}
L->length--;
return 1;
}
int LocateElem(SqList *L, ElemType e) {
for (int i = 0; i < L->length; i++) {
if (L->data[i] == e) {
return i + 1;
}
}
return 0;
}
int main() {
SqList L;
InitList(&L);
ListInsert(&L, 1, 'a');
ListInsert(&L, 2, 'b');
ListInsert(&L, 3, 'c');
ListInsert(&L, 4, 'd');
ListInsert(&L, 5, 'e');
printf("顺序表L:");
for (int i = 0; i < L.length; i++) {
printf("%c ", L.data[i]);
}
printf("\n");
printf("顺序表L的长度:%d\n", L.length);
printf("顺序表L是否为空:%d\n", L.length == 0);
printf("顺序表L的第3个元素:%c\n", L.data[2]);
printf("元素a的位置:%d\n", LocateElem(&L, 'a'));
ListInsert(&L, 4, 'f');
printf("插入元素f后的顺序表L:");
for (int i = 0; i < L.length; i++) {
printf("%c ", L.data[i]);
}
printf("\n");
ListDelete(&L, 3);
printf("删除第3个元素后的顺序表L:");
for (int i = 0; i < L.length; i++) {
printf("%c ", L.data[i]);
}
printf("\n");
return 0;
}
阅读全文