将 1 ~ n 这 n 个数存放在一个链表中,给定相邻两个数的连接关系,请按照顺序输出这个链表。(C++, 需代码) 【输入格式】
第 1 行一个整数,表示 n。
第 2 ~ n 行,每行两个正整数 a, b,表示 a 和 b 相连,并且 a 位于 b 之前(输入格式)
将 1 ~ n 这 n 个数存放在一个链表中,给定相邻两个数的连接关系,请按照顺序输出这个链表。(C++, 需代码) 【输入格式】
第 1 行一个整数,表示 n。
第 2 ~ n 行,每行两个正整数 a, b,表示 a 和 b 相连,并且 a 位于 b 之前(输入格式)
#include <iostream>
using namespace std;
// 定义链表节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 创建链表函数,返回链表的头节点指针
ListNode* createLinkedList(int n) {
if (n <= 0) return nullptr;
ListNode* head = new ListNode(1); // 头节点
ListNode* curr = head; // 当前节点指针
// 创建链表
for (int i = 2; i <= n; ++i) {
ListNode* newNode = new ListNode(i);
curr->next = newNode;
curr = newNode;
}
return head;
}
// 输出链表元素函数
void printLinkedList(ListNode* head) {
ListNode* curr = head;
while (curr) {
cout << curr->val << " ";
curr = curr->next;
}
cout << endl;
}
int main() {
int n;
cout << "Enter the number n: ";
cin >> n;
ListNode* head = createLinkedList(n); // 创建链表
cout << "Linked list elements: ";
printLinkedList(head); // 输出链表元素
// 释放链表内存
ListNode* curr = head;
while (curr) {
ListNode* temp = curr;
curr = curr->next;
delete temp;
}
return 0;
}
这段代码包括了以下几个关键步骤:
ListNode 结构体:定义了链表节点的结构,包含一个整数值和指向下一个节点的指针。
createLinkedList 函数:根据输入的整数 n,创建包含数字 1 到 n 的链表。使用循环逐个创建节点,并连接起来形成链表,返回链表的头节点指针。
printLinkedList 函数:遍历链表并顺序输出链表中的每个元素。
main 函数:在主函数中,首先输入 n,然后调用 createLinkedList 创建链表,再调用 printLinkedList 输出链表元素。最后释放链表占用的内存。
这样,你可以按照顺序输出从 1 到 n 的链表元素。