题目描述:建立一个长度为n的带头结点的单链表,在该表中寻找第i个结点,若找到,则输出ok,否则输出error。处理数据类型为整型。
输入要求:
第一行为链表的长度n; 第二行为链表中的数据元素; 第三行为要找的结点i。
输出要求:
找到就输出ok,没找到就输出error。
输入样例:
10 1 2 3 4 5 6 7 8 9 10 5
输出样例:
ok
代码:
#include<iostream>
using namespace std;
struct nodeList {
int value;
nodeList*next = NULL;
}; //创建节点结构
bool findNode(nodeList*pHead, int n,int x) //查找算法,返回一个bool类型的数值
{
int node=1; //node用来记录正在被判断的节点,默认第一个节点被查找
nodeList*p = pHead;
p = p->next;
for(int i=0;i<n+1;i++)
{
if(node==x) //如果正在被判断的节点等于被查找的节点,返回true
{
return true;
}
if(p->next!=NULL) //如果正在被判断的节点不是尾节点,继续判断下一个节点
{
p = p->next;
node++;
}else{
return false; //查找结束没有x节点,返回false
}
}
}
void craftlist(nodeList *pHead,int n) //??????
{
int x;
nodeList*p = pHead;
for(int i=0;i<n;i++)
{
cin>>x;
nodeList*newNode = new nodeList;
newNode->value = x;
newNode->next = NULL;
p->next=newNode;
p=p->next;
}
}
int main()
{
int n,x; //n,x分别为链表长度,查找的节点
cin>>n;
nodeList*pHead = new nodeList; //创建头节点
pHead->next = NULL;
pHead->value=0;
craftlist(pHead, n); //创建链表
cin>>x;
if(findNode(pHead,n,x))
{
cout<<"ok";
}else{
cout<<"error";
}
return 0;
}