实现顺序表的基本操作: (1)构造空的顺序表; (2)建立含有若干数据元素的顺序表; (3)求表长; (4)获取第i个元素的值; (5)数据元素插入; (6)数据元素删除; (7)输出顺序表; 要求分别用函数实现上述功能,并设计主程序调用上述函数,需使用菜单。
时间: 2023-06-27 19:06:52 浏览: 55
以下是基于C语言的顺序表实现,具体代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
// 定义顺序表结构体
typedef struct {
int data[MaxSize];
int length;
} SeqList;
// 构造空的顺序表
void InitList(SeqList *L) {
L->length = 0;
}
// 建立含有若干数据元素的顺序表
void CreateList(SeqList *L) {
int n, i;
printf("请输入元素个数: ");
scanf("%d", &n);
printf("请输入%d个元素: ", n);
for (i = 0; i < n; i++) {
scanf("%d", &L->data[i]);
}
L->length = n;
}
// 求表长
int ListLength(SeqList L) {
return L.length;
}
// 获取第i个元素的值
int GetElem(SeqList L, int i) {
if (i < 1 || i > L.length) {
printf("位置不合法!\n");
return -1;
}
return L.data[i-1];
}
// 数据元素插入
void ListInsert(SeqList *L, int i, int e) {
int j;
if (L->length >= MaxSize) {
printf("表已满,无法插入!\n");
return;
}
if (i < 1 || i > L->length+1) {
printf("位置不合法!\n");
return;
}
for (j = L->length; j >= i; j--) {
L->data[j] = L->data[j-1];
}
L->data[i-1] = e;
L->length++;
}
// 数据元素删除
void ListDelete(SeqList *L, int i) {
int j;
if (i < 1 || i > L->length) {
printf("位置不合法!\n");
return;
}
for (j = i; j < L->length; j++) {
L->data[j-1] = L->data[j];
}
L->length--;
}
// 输出顺序表
void PrintList(SeqList L) {
int i;
printf("顺序表为: ");
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SeqList L;
int choice, i, e;
InitList(&L);
while (1) {
printf("\n");
printf("********** 顺序表的基本操作 **********\n");
printf("* 1.构造空的顺序表 *\n");
printf("* 2.建立含有若干数据元素的顺序表 *\n");
printf("* 3.求表长 *\n");
printf("* 4.获取第i个元素的值 *\n");
printf("* 5.数据元素插入 *\n");
printf("* 6.数据元素删除 *\n");
printf("* 7.输出顺序表 *\n");
printf("* 0.退出 *\n");
printf("****************************************\n");
printf("请输入操作的序号: ");
scanf("%d", &choice);
switch (choice) {
case 0:
exit(0);
case 1:
InitList(&L);
printf("构造成功!\n");
break;
case 2:
CreateList(&L);
printf("建立成功!\n");
break;
case 3:
printf("表长为: %d\n", ListLength(L));
break;
case 4:
printf("请输入要获取的元素位置: ");
scanf("%d", &i);
e = GetElem(L, i);
if (e != -1) {
printf("第%d个元素的值为%d\n", i, e);
}
break;
case 5:
printf("请输入要插入的位置和元素值: ");
scanf("%d %d", &i, &e);
ListInsert(&L, i, e);
printf("插入成功!\n");
break;
case 6:
printf("请输入要删除的元素位置: ");
scanf("%d", &i);
ListDelete(&L, i);
printf("删除成功!\n");
break;
case 7:
PrintList(L);
break;
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
运行程序后,会显示菜单,根据提示选择相应的操作即可。
阅读全文