文章目录
- 练习题目
- 链表的基础操作II
- 具体代码实现
- 小白寄语
- 诗词共勉
练习题目
链表的基础操作II
题目描述:
请编写一个程序,实现以下操作:
构建一个单向链表,链表中包含一组整数数据,输出链表中的第 m 个元素(m 从 1 开始计数)。
要求:
输入描述:
第一行包含两个整数 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;
}
小白寄语
扎根,做好手头的事,精进。
诗词共勉
人生若只如初见,何事秋风悲画扇。
等闲变却故人心,却道故人心易变。
-----------纳兰性德