时间限制:1.000S 空间限制:128MB
题目描述
请编写一个程序,实现以下操作:
构建一个单向链表,链表中包含一组整数数据,输出链表中的第 m 个元素(m 从 1 开始计数)。
要求:
1. 使用自定义的链表数据结构
2. 提供一个 linkedList 类来管理链表,包含构建链表、输出链表元素以及输出第 m 个元素的方法
3. 在 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;
//定义链表节点结构体
struct ListNode{
int val;
ListNode *next;
ListNode(int x) : val(x),next(nullptr){}
};
int main(){
int n,k,m;
cin >>n>>k;//输入n和k,n表示需要构建的链表的长度,k代表输入的m的个数
ListNode* dummyhead =new ListNode(0);//创建了一个虚拟头节点
ListNode *cur = dummyhead;//定义一个指向当前节点的指针cur,初始指向虚拟头节点
for(int i=0;i<n;i++)
{
int val;
cin >> val;
ListNode *newNode = new ListNode(val);//构建一个新的节点
cur -> next = newNode;//将新节点接入链表
cur = cur ->next;//cur指向下一个节点
}
while(k--)
{
cin >> m;
cur = dummyhead;
while(m--)
{//寻找链表第m个元素
if(cur !=NULL)
{
cur =cur -> next;
}
else{
break;
}
}
//cur == NULL表示m超出了链表长度
//cur == dummyhead 表示m=0
if(cur == NULL || cur == dummyhead)
{
cout << "Output position out of bounds."<< endl;
}
else cout << cur->val <<endl;
}
return 0;
}