用c语言打一个基础的线性表代码
时间: 2023-12-07 07:03:05 浏览: 76
C语言实现线性表
以下是一个基础的线性表代码,使用C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 线性表的最大长度
// 线性表结构体
typedef struct {
int data[MAX_SIZE]; // 存储线性表元素的数组
int length; // 线性表长度
} List;
// 初始化线性表(置空)
void initList(List *list) {
list->length = 0;
}
// 获取线性表元素
int getElem(List list, int index, int *elem) {
if (index < 1 || index > list.length) {
printf("Error: Index out of range.\n");
return 0;
}
*elem = list.data[index - 1];
return 1;
}
// 插入元素
int insertElem(List *list, int index, int elem) {
if (list->length == MAX_SIZE) {
printf("Error: List is full.\n");
return 0;
}
if (index < 1 || index > list->length + 1) {
printf("Error: Index out of range.\n");
return 0;
}
for (int i = list->length - 1; i >= index - 1; i--) {
list->data[i + 1] = list->data[i];
}
list->data[index - 1] = elem;
list->length++;
return 1;
}
// 删除元素
int deleteElem(List *list, int index, int *elem) {
if (list->length == 0) {
printf("Error: List is empty.\n");
return 0;
}
if (index < 1 || index > list->length) {
printf("Error: Index out of range.\n");
return 0;
}
*elem = list->data[index - 1];
for (int i = index; i < list->length; i++) {
list->data[i - 1] = list->data[i];
}
list->length--;
return 1;
}
// 遍历线性表
void traverseList(List list) {
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
}
int main() {
List list;
initList(&list);
insertElem(&list, 1, 1); // 在第一个位置插入元素1
insertElem(&list, 2, 2); // 在第二个位置插入元素2
insertElem(&list, 3, 3); // 在第三个位置插入元素3
int elem = 0;
getElem(list, 2, &elem); // 获取第二个位置的元素
printf("The second element is: %d\n", elem);
deleteElem(&list, 2, &elem); // 删除第二个位置的元素
traverseList(list); // 遍历线性表,输出剩余元素
return 0;
}
```
该代码实现了线性表的基本操作,包括初始化、获取元素、插入元素、删除元素和遍历线性表等。其中,`List`结构体包含了一个`data`数组和一个`length`变量,分别用于存储线性表元素和记录线性表长度。
该代码中使用了宏定义`MAX_SIZE`,表示线性表的最大长度。在具体实现中,如果线性表已满,插入元素操作会失败,删除元素操作会出错;如果线性表为空,删除元素操作也会出错。
阅读全文