不带头结点实现尾插法建立单链表
时间: 2023-11-07 11:05:03 浏览: 188
好的,我可以回答这个问题。不带头结点实现尾插法建立单链表的思路是先定义一个指针变量,该指针变量指向链表的第一个节点。然后依次读入各个节点的数据,创建节点,并将该节点插入到链表的尾部。
具体流程如下:
1. 定义一个指针变量 p,初始化为 NULL。
2. 读入第一个节点的值,创建该节点,并将 p 指向该节点。
3. 读入下一个节点的值,创建该节点,并将 p->next 指向该节点。
4. 将 p 指向新创建的节点。
5. 重复第 3 步和第 4 步,直到读入所有节点的值。
6. 将 p 的 next 指针设置为 NULL,表示链表的结尾。
下面是具体的代码实现:
```
#include <iostream>
using namespace std;
struct Node {
int data;
Node *next;
};
int main() {
Node *p = NULL; // 定义指针变量 p,初始化为 NULL
int value;
cin >> value; // 读入第一个节点的值
while(value != -1) {
Node *node = new Node; // 创建新节点
node->data = value; // 设置新节点的数据
node->next = NULL; // 将新节点的 next 指针设置为 NULL
if(p == NULL) { // 第一个节点特殊处理
p = node;
} else { // 链表已存在
Node *tmp = p; // 定义临时指针变量
while(tmp->next != NULL) { // 找到链表最后一个节点
tmp = tmp->next;
}
tmp->next = node; // 将新节点插入到链表的尾部
}
cin >> value; // 读入下一个节点的值
}
// 输出链表中的数据
Node *tmp = p;
while(tmp != NULL) {
cout << tmp->data << " ";
tmp = tmp->next;
}
cout << endl;
return 0;
}
```
希望能帮到你。
阅读全文