【C++语言】卡码网语言基础课系列----14. 链表的基础操作II
文章目录
- 练习题目
- 链表的基础操作II
- 具体代码实现
- 小白寄语
- 诗词共勉
练习题目
链表的基础操作II
题目描述:
请编写一个程序,实现以下操作:
构建一个单向链表,链表中包含一组整数数据,输出链表中的第 m 个元素(m 从 1 开始计数)。
要求:
- 使用自定义的链表数据结构
- 提供一个 linkedList 类来管理链表,包含构建链表、输出链表元素以及输出第 m 个元素的方法
- 在 main 函数中,创建一个包含一组整数数据的链表,然后输入 m,调用链表的方法输出第 m 个元素
输入描述:
第一行包含两个整数 n 和 k,n 表示需要构建的链表的长度,k 代表输入的 m 的个数。
接下来一行包含 n 个整数,表示链表中的元素。
接下来一行包含 k 个整数,表示输出链表中的第 m 个元素。
输出描述:
测试数据输出占 k 行。
每行输出链表中的第 m 个元素。如果 m 位置不合法,则输出“Output position out of bounds.”。
输入示例
5 5
1 2 3 4 5
4 3 2 9 0
输出示例
4
3
2
Output position out of bounds.
Output position out of bounds.
具体代码实现
#include <iostream>
using namespace std;
// 定义链表节点结构体
typedef struct ListNode{
int val;
ListNode *next;
ListNode(int x) : val(x), next(nullptr) {} // 通过构造函数初始化链表
}ListNode;
int main()
{
int n, k;
cin >> n >> k; // 第一行包含两个整数,需要一次性输入完毕
ListNode *dummyNode = new ListNode(0); // 创建哑节点
ListNode *cur = dummyNode;
// 开始构造链表
while (n--) {
int val;
cin >> val;
ListNode *newNode = new ListNode(val);
cur->next = newNode;
cur = cur->next;
}
// 开始输出测试数据
while (k--) {
int m;
cin >> m;
cur = dummyNode; // 将当前节点,先指向哑节点
while (m--) { // 遍历获取第m个元素值
if (cur != nullptr) {
cur = cur->next;
} else {
break;
}
}
if (cur == dummyNode || cur == nullptr) {
cout << "Output position out of bounds." << endl;
} else {
cout << cur->val << endl;
}
}
return 0;
}
小白寄语
扎根,做好手头的事,精进。
诗词共勉
人生若只如初见,何事秋风悲画扇。
等闲变却故人心,却道故人心易变。
-----------纳兰性德