编写程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入0时,表示结束(链表头结点的data域不放数据,表空条件是next==NULL)。
时间: 2024-02-12 09:09:03 浏览: 43
好的,我可以帮你编写这个程序。以下是 C++ 代码实现:
```cpp
#include <iostream>
using namespace std;
// 定义链表结点结构体
struct ListNode {
int data;
ListNode* next;
};
int main() {
// 创建头结点
ListNode* head = new ListNode();
head->next = NULL;
// 输入结点数据,插入链表尾部
int num;
cout << "请输入链表结点数据,以0结束:" << endl;
cin >> num;
while (num != 0) {
ListNode* newNode = new ListNode();
newNode->data = num;
newNode->next = NULL;
ListNode* tail = head;
while (tail->next != NULL) {
tail = tail->next;
}
tail->next = newNode;
cin >> num;
}
// 输出链表
ListNode* p = head->next;
cout << "链表结点数据为:" << endl;
while (p != NULL) {
cout << p->data << " ";
p = p->next;
}
cout << endl;
// 释放链表结点空间
p = head->next;
while (p != NULL) {
ListNode* temp = p;
p = p->next;
delete temp;
}
// 释放头结点空间
delete head;
return 0;
}
```
程序流程说明:
1. 创建一个头结点,并将 next 指针初始化为 NULL,表示链表为空。
2. 通过循环输入结点数据,创建新结点并插入链表尾部。循环条件为输入的数字不为 0。
3. 遍历链表,输出结点数据。
4. 释放链表结点空间,依次删除每个结点。
5. 释放头结点空间。
希望这个程序能够帮助到你!