通过结构体将数组封装为线性表,用c语言实现实现插入、删除、获取、修改、输出等操作。
时间: 2023-12-21 18:04:03 浏览: 69
线性表顺序存储,破坏系统源码和c语言哪个好,c语言
下面是一个简单的例子,使用结构体将数组封装为线性表,并实现了常见的操作:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
// 定义线性表结构体
typedef struct {
int data[MAX_SIZE];
int length;
} LinearList;
// 初始化线性表
void initList(LinearList *list) {
list->length = 0;
}
// 插入元素
void insertList(LinearList *list, int index, int value) {
if (index < 0 || index > list->length || list->length == MAX_SIZE) {
printf("插入位置错误或线性表已满\n");
return;
}
for (int i = list->length - 1; i >= index; i--) {
list->data[i + 1] = list->data[i];
}
list->data[index] = value;
list->length++;
}
// 删除元素
void deleteList(LinearList *list, int index) {
if (index < 0 || index >= list->length) {
printf("删除位置错误\n");
return;
}
for (int i = index; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->length--;
}
// 获取元素
int getElem(LinearList *list, int index) {
if (index < 0 || index >= list->length) {
printf("获取位置错误\n");
return -1;
}
return list->data[index];
}
// 修改元素
void modifyElem(LinearList *list, int index, int value) {
if (index < 0 || index >= list->length) {
printf("修改位置错误\n");
return;
}
list->data[index] = value;
}
// 输出线性表
void printList(LinearList *list) {
printf("线性表元素:");
for (int i = 0; i < list->length; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
int main() {
LinearList list;
initList(&list);
// 插入元素
insertList(&list, 0, 1);
insertList(&list, 1, 2);
insertList(&list, 2, 3);
// 输出线性表
printList(&list);
// 获取元素
printf("第2个元素:%d\n", getElem(&list, 1));
// 修改元素
modifyElem(&list, 1, 4);
printList(&list);
// 删除元素
deleteList(&list, 1);
printList(&list);
return 0;
}
```
这个例子中,我们将数组封装为结构体 `LinearList`,包含了数组 `data` 和长度 `length` 两个成员变量。然后实现了 `initList`、`insertList`、`deleteList`、`getElem`、`modifyElem`、`printList` 等操作。在主函数中,我们进行了插入、获取、修改、删除和输出操作的演示。
阅读全文