(1) 编写程序建立一个顺序表,并逐个输出顺序表中所有数据元素的值。编写主函数测试结果。运用c语言编写
时间: 2024-03-25 14:39:47 浏览: 56
编写函数,建立一个顺序表并输出,计算该顺序表的长度。 实现在顺序表中查找第i个元素的值。实现在顺序表中第i个位置上插入值为x的
5星 · 资源好评率100%
以下是一个简单的顺序表实现,包含创建、插入、删除和遍历操作的函数。
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef struct {
int data[MAXSIZE]; // 存储数据元素的数组
int length; // 当前顺序表的长度
} SqList;
// 初始化顺序表
void InitList(SqList *L) {
L->length = 0;
}
// 向顺序表中插入元素
int ListInsert(SqList *L, int i, int 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;
}
// 遍历顺序表并输出所有元素
void TraverseList(SqList *L) {
printf("List elements: ");
for (int i = 0; i < L->length; i++) {
printf("%d ", L->data[i]);
}
printf("\n");
}
int main() {
SqList L;
InitList(&L);
ListInsert(&L, 1, 10);
ListInsert(&L, 2, 20);
ListInsert(&L, 3, 30);
TraverseList(&L);
ListDelete(&L, 2);
TraverseList(&L);
return 0;
}
```
其中,InitList()函数用于初始化顺序表,ListInsert()函数用于向顺序表中插入元素,ListDelete()函数用于从顺序表中删除元素,TraverseList()函数用于遍历顺序表并输出所有元素。在主函数中,我们创建了一个顺序表L,并依次插入了三个元素,然后输出了顺序表中所有元素的值。接着删除了第二个元素,再次输出了所有元素的值。运行该程序,输出结果如下:
```
List elements: 10 20 30
List elements: 10 30
```
阅读全文