从键盘上输入n个整数,用尾插法建立一个带头结点的单链表,并编写单链表的输出函数。
时间: 2024-09-23 18:14:00 浏览: 80
小白算法积累——单链表15#2个带头结点单链表+提取公共元素+二表合一
在计算机程序设计中,如果你想要从键盘输入n个整数并构建一个带头结点的单链表,你可以按照以下步骤操作:
1. 首先,创建一个单链表结构,通常包含一个数据域和一个指向下一个节点的指针。头节点通常是一个特殊节点,它的next指针为空。
```c++
typedef struct Node {
int data;
struct Node* next;
} Node;
```
2. 然后编写一个函数用于获取用户输入并创建新节点。这个函数会连续读取输入直到遇到换行符,然后将数字存储到新节点的数据字段,并将其添加到链表尾部。
```c++
Node* createList(int n) {
Node* head = new Node; // 创建头节点
head->data = 0; // 初始化头节点,假设它通常是0
head->next = nullptr;
for (int i = 1; i <= n; ++i) {
int input;
std::cin >> input; // 从标准输入读取整数
Node* newNode = new Node;
newNode->data = input;
newNode->next = head->next;
head->next = newNode; // 尾插法添加新节点
}
return head;
}
```
3. 编写一个输出函数遍历整个链表并打印每个节点的值。因为链表的最后一个节点的next指针应该是指向NULL,所以我们可以从头节点开始递归地访问每个节点。
```c++
void printList(Node* node) {
if (node == nullptr) return; // 如果到达空节点则停止
printf("%d ", node->data); // 打印当前节点数据
printList(node->next); // 递归遍历下一个节点
}
```
结合以上代码,完整的示例如下:
```c++
// 示例函数
Node* buildLinkedList() {
int n;
std::cout << "请输入元素个数(n): ";
std::cin >> n;
return createList(n);
}
void displayList(Node* head) {
printList(head);
std::cout << "\n";
}
int main() {
Node* listHead = buildLinkedList();
displayList(listHead); // 输出链表
delete listHead; // 清理内存
return 0;
}
```
阅读全文