实现单链表的创建操作 使用头插法创建单链表 使用尾插法创建单链表
时间: 2024-10-09 22:07:38 浏览: 30
单链表 创建 头插法 尾插法 就地逆置
5星 · 资源好评率100%
在C语言中,我们可以使用结构体来表示链表节点,然后分别用头插法(在头部插入新节点)和尾插法(在尾部插入新节点)来创建单链表。
**1. 实现头插法(在头部添加新节点):**
```c
#include <stdio.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建新节点并插入到链表头部
Node* insertAtHead(int value) {
// 分配内存给新节点
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed.\n");
return NULL;
}
// 将数据放入新节点
newNode->data = value;
newNode->next = NULL; // 新节点默认指向空
// 插入到链表头部
if (head != NULL) { // 如果链表非空
newNode->next = head; // 新节点的next指向前一个头节点
}
head = newNode; // 更新头节点为新节点
return head;
}
```
**2. 实现尾插法(在尾部添加新节点):**
```c
// 尾部插入新节点
void insertAtTail(int value) {
Node* newNode = (Node*)malloc(sizeof(Node)); // 分配内存
if (!newNode) {
printf("Memory allocation failed.\n");
return;
}
newNode->data = value;
newNode->next = NULL; // 初始化新节点的next指针为NULL
// 若链表为空或只有一个节点
if (head == NULL) {
head = newNode;
return;
}
// 找到最后一个节点
Node* lastNode = head;
while (lastNode->next != NULL) {
lastNode = lastNode->next;
}
// 在最后一个节点后插入新节点
lastNode->next = newNode;
}
```
在上述代码中,`head` 是链表的第一个节点,通常初始化为 `NULL`。记得在实际应用中处理好内存分配和释放,特别是当链表为空时避免野指针访问。
阅读全文