要求实现一个函数,找到并返回链式表的第k个元素。
函数接口定义:
ElementType FindKth(List L,int k);
其中List
结构定义如下:
typedef struct LNode *PtrToNode;
struct LNode
{
ElementType Data;
PtrToNode Next;
};
typedef PtrToLNode List;
L
是给定单链表,函数FindKth
要返回链式表的第k个元素。如果该元素不存在,则返回ERROR
。
输入样例:
1 3 4 5 2 -1
6
3 6 1 5 4 2
输出样例:
4 NA 1 2 5 3
#include<iostream>
#include<stdlib.h>
using namespace std;
#define ERROR -1
typedef int ElementType;
typedef struct LNode *PtrToLNode;
struct LNode
{
ElementType Data;
PtrToLNode Next;
};
typedef PtrToLNode List;
List Read()
{
List L,p,q;
int num=0;
L=(List)malloc(sizeof(List));
q=L;
do
{
cin>>num;
p=(List)malloc(sizeof(List));
p->Data=num;
q->Next=p;
q=p;
}while(getchar()!='\n');
q->Next=NULL;
return L->Next;
}
ElementType FindKth(List L, int K)
{
if(L==NULL||K==0)
{
return ERROR;
}
List p=L;
for(int i=1;i<K;i++)
{
if(p->Next==NULL)
{
return ERROR;
}
p=p->Next;
}
return p->Data;
}
int main()
{
int N, K;
ElementType X;
List L=Read();
cin>>N;
while(N--)
{
cin>>K;
X=FindKth(L,K);
if(X!=ERROR)
{
cout<<X<<" ";
}
else
{
cout<<"NA"<<" ";
}
}
return 0;
}