用c语言写一段完整的顺序存储的线性表的代码
时间: 2024-04-07 13:30:06 浏览: 117
当然可以!下面是一段使用C语言编写的顺序存储的线性表代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
// 初始化线性表
void initList(SeqList *list) {
list->length = 0;
}
// 判断线性表是否为空
int isEmpty(SeqList list) {
return list.length == 0;
}
// 获取线性表长度
int getLength(SeqList list) {
return list.length;
}
// 插入元素到线性表指定位置
int insert(SeqList *list, int pos, int value) {
if (list->length >= MAX_SIZE || pos < 1 || pos > list->length + 1) {
return 0; // 插入失败
}
// 移动元素,为新元素腾出位置
for (int i = list->length; i >= pos; i--) {
list->data[i] = list->data[i - 1];
}
// 插入新元素
list->data[pos - 1] = value;
list->length++;
return 1; // 插入成功
}
// 删除线性表指定位置的元素
int delete(SeqList *list, int pos) {
if (isEmpty(*list) || pos < 1 || pos > list->length) {
return 0; // 删除失败
}
// 移动元素,覆盖被删除元素
for (int i = pos; i < list->length; i++) {
list->data[i - 1] = list->data[i];
}
list->length--;
return 1; // 删除成功
}
// 获取线性表指定位置的元素
int getElement(SeqList list, int pos, int *value) {
if (isEmpty(list) || pos < 1 || pos > list.length) {
return 0; // 获取失败
}
*value = list.data[pos - 1];
return 1; // 获取成功
}
// 输出线性表的所有元素
void display(SeqList list) {
if (isEmpty(list)) {
printf("线性表为空\n");
return;
}
printf("线性表元素为: ");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
}
int main() {
SeqList list;
initList(&list);
insert(&list, 1, 10);
insert(&list, 2, 20);
insert(&list, 3, 30);
display(list);
int value;
getElement(list, 2, &value);
printf("第2个位置的元素为: %d\n", value);
delete(&list, 2);
display(list);
return 0;
}
```
这段代码实现了顺序存储的线性表的常用操作,包括初始化、判断是否为空、获取长度、插入元素、删除元素、获取指定位置的元素和输出所有元素。在示例中,我们创建了一个线性表,并插入了三个元素,然后输出线性表的所有元素。接着获取第二个位置的元素,并删除第二个位置的元素,最后再次输出线性表的所有元素。
阅读全文