单链表头插法和尾插法的实现方式,用c语言编程
时间: 2024-09-18 11:15:24 浏览: 7
单链表的头插法和尾插法是指在链表的头部或尾部添加新节点的操作。
**头插法(Insert at the beginning)**:
```c
void insertAtHead(struct Node **head, int data) {
// 创建新节点
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
if (!newNode) { /* 检查内存分配是否成功 */ return; }
// 将数据存入新节点
newNode->data = data;
newNode->next = *head; // 新节点的next指向前一个头节点
// 更新头节点指针
*head = newNode;
}
```
在这个函数里,我们首先创建一个新的节点,然后将它的`next`指针指向当前头节点,最后更新头节点为新节点。
**尾插法(Insert at the end)**:
```c
void insertAtTail(struct Node **head, int data) {
// 如果链表为空,直接插入头结点
if (*head == NULL) {
insertAtHead(head, data);
return;
}
// 找到最后一个节点
struct Node* lastNode = *head;
while (lastNode->next != NULL) {
lastNode = lastNode->next;
}
// 插入新节点
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
if (!newNode) { /* 检查内存分配 */ return; }
newNode->data = data;
newNode->next = NULL; // 新节点的next设为NULL,表示它位于链表的尾部
lastNode->next = newNode;
}
```
这里,我们需要遍历链表找到最后一个节点,然后在其后插入新节点。