用尾插法构造单链表,新节点插入在单链表尾节点后用C语言实现
时间: 2024-10-19 14:08:00 浏览: 29
尾插法是一种常见的链表操作,它可以在不改变链表结构的情况下,在已有的链表最后一个节点之后插入新的元素。以下是用C语言实现这个过程的简单示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct ListNode {
int data; // 节点数据
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
// 创建新节点
ListNode* createNode(int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
if (newNode != NULL) {
newNode->data = value;
newNode->next = NULL; // 新建的节点默认指向NULL
}
return newNode;
}
// 尾插法在已有链表尾部添加新节点
void appendToList(ListNode** headRef, int value) {
ListNode* newNode = createNode(value);
if (*headRef == NULL) { // 如果链表为空,直接将新节点设为头节点
*headRef = newNode;
return;
}
ListNode* current = *headRef;
while (current->next != NULL) {
current = current->next;
} // 遍历到链表尾部
current->next = newNode; // 将新节点连接到当前节点后面
}
// 打印链表
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
ListNode* head = NULL;
appendToList(&head, 1); // 插入第一个节点
appendToList(&head, 2);
appendToList(&head, 3);
printf("链表内容: ");
printList(head);
return 0;
}
```
在这个代码中,`appendToList`函数接收链表头节点的地址作为参数,并在其后添加新节点。当链表为空时,新节点即成为头节点。如果链表非空,则遍历到链表尾部再插入新节点。
阅读全文