在C语言中如何实现一个简单的线性表,以及线性表的逻辑结构和存储结构有什么优缺点?
时间: 2024-12-03 16:29:07 浏览: 13
在C语言中实现线性表,通常有两种方法:顺序存储结构和链式存储结构。顺序存储结构通常使用数组实现,它通过连续的存储单元来存储线性表的元素,具有随机访问速度快的优点,但在插入和删除操作时可能需要移动大量元素,效率较低。而链式存储结构使用指针将一系列存储单元链接在一起,元素插入和删除时只需修改相关指针即可,操作灵活,但存储利用率可能较低,且无法实现随机访问。下面是一个使用链式存储结构实现的简单线性表的示例代码:
参考资源链接:[《数据结构(C语言版)第2版》课后答案解析](https://wenku.csdn.net/doc/4hf1yzban1?spm=1055.2569.3001.10343)
```c
#include <stdio.h>
#include <stdlib.h>
typedef int ElementType; // 数据域类型
typedef struct Node {
ElementType data; // 数据域
struct Node *next; // 指针域,指向下一个节点
} Node, *LinkList;
// 创建线性表
LinkList CreateList() {
Node *head = (Node *)malloc(sizeof(Node)); // 创建头节点
if (!head) return NULL; // 内存分配失败
head->next = NULL; // 初始化为空表
return head;
}
// 向线性表中插入元素
void InsertList(LinkList L, ElementType e) {
Node *newNode = (Node *)malloc(sizeof(Node));
if (!newNode) return; // 内存分配失败
newNode->data = e; // 设置新节点的数据域
newNode->next = L->next; // 新节点指向原首节点
L->next = newNode; // 原头节点指向新节点
}
// 删除线性表中的元素
void DeleteList(LinkList L, ElementType e) {
Node *current = L;
while (current->next) {
if (current->next->data == e) {
Node *temp = current->next;
current->next = temp->next;
free(temp);
break;
}
current = current->next;
}
}
// 打印线性表
void PrintList(LinkList L) {
Node *current = L->next;
while (current) {
printf(
参考资源链接:[《数据结构(C语言版)第2版》课后答案解析](https://wenku.csdn.net/doc/4hf1yzban1?spm=1055.2569.3001.10343)
阅读全文