PTA尾插法建立链表
时间: 2024-12-31 10:40:37 浏览: 13
### 尾插法创建单链表
尾插法是一种常见的构建单链表的方法,在这种方法中每次新节点都插入到当前链表的末尾。这种方式可以有效地保持链表元素按照输入顺序排列。
#### 创建过程描述
为了实现这一功能,程序首先需要创建一个新的头结点并将其`next`属性设置为`NULL`,这标志着初始状态下该链表为空[^1]。随后进入循环读取数据阶段,对于每一次成功读入的数据值:
- 动态分配内存给新的节点;
- 设置这个新节点的数据域为其对应的数值以及其指针域指向`NULL`,表明这是目前链表的最后一项;
- 更新现有最后一个节点(`rear`)的下一个位置为此新建节点的位置,并让`rear`移动至最新添加的那个节点处以便于下一次迭代继续执行相同的操作直到所有预期中的元素都被处理完毕[^3]。
下面是具体的C语言代码示例用于展示上述逻辑:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct snode {
int data;
struct snode* next;
} LNode, *LinkList;
// 使用尾插法建立链表
LinkList createByTailInsertion() {
LinkList L = (LinkList)malloc(sizeof(LNode)); // 创建链表头结点
L->next = NULL; // 初始化头结点的next为null
LinkList rear = L; // 定义一个指向链表末端的指针
int value;
while (scanf("%d", &value) != EOF && value >= 0) { // 假设以负数结束输入
LinkList newNode = (LinkList)malloc(sizeof(LNode));
newNode->data = value;
newNode->next = NULL;
rear->next = newNode;
rear = newNode;
}
return L;
}
```
这段代码实现了通过用户终端持续接收整型数据作为列表成员的过程,当遇到文件结束符EOF或小于零的数字时停止录入,并返回完整的单向链接列表对象。
阅读全文