线性表的链式表示和实现 C语言版
时间: 2024-11-22 22:45:15 浏览: 17
线性表的链式表示是一种数据结构,它将每个元素(节点)存储在一个单独的对象中,并通过链接(指针)将其连接起来,形成一条动态的序列。在C语言中,我们可以这样实现:
1. **定义节点结构**:
```c
typedef struct Node {
int data; // 节点的数据域
struct Node* next; // 指向下一个节点的指针
} Node;
```
2. **创建链表头结点**:
```c
Node* head = NULL; // 初始化链表为空
```
3. **插入节点**:
```c
void insertNode(Node** head, int value) {
Node* newNode = (Node*)malloc(sizeof(Node)); // 创建新节点
newNode->data = value;
newNode->next = *head; // 将新节点指向当前头节点
*head = newNode; // 如果链表为空,新节点成为新的头节点
}
```
4. **删除节点**:
```c
void deleteNode(Node** head, int value) {
if (*head == NULL) return; // 链表为空
Node* temp = *head;
if (temp->data == value) { // 如果头节点就是要删除的值
*head = temp->next; // 更新头节点
free(temp); // 释放已删除节点的内存
return;
}
while (temp != NULL && temp->data != value) {
temp = temp->next;
}
if (temp == NULL) return; // 找不到要删除的节点
Node* prev = temp->prev; // 记录前一个节点
prev->next = temp->next; // 修改前一个节点的next指向前一个节点
free(temp); // 释放已删除节点的内存
}
```
5. **遍历链表**:
```c
void printList(Node* head) {
Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
```
阅读全文