本题要求实现一个函数,找到并返回链式表的第K个元素。
函数接口定义:
ElementType FindKth( List L, int K );
其中List
结构定义如下:
typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode List;
L
是给定单链表,函数FindKth
要返回链式表的第K
个元素。如果该元素不存在,则返回ERROR
。
裁判测试程序样例:
#include#include #define ERROR -1typedef int ElementType;typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode List;List Read(); /* 细节在此不表 */ElementType FindKth( List L, int K );int main(){ int N, K; ElementType X; List L = Read(); scanf("%d", &N); while ( N-- ) { scanf("%d", &K); X = FindKth(L, K); if ( X!= ERROR ) printf("%d ", X); else printf("NA "); } return 0;}/* 你的代码将被嵌在这里 */
输入样例:
1 3 4 5 2 -163 6 1 5 4 2
输出样例:
4 NA 1 2 5 3 代码展示:
1 List Read() 2 { 3 PtrToLNode head = NULL; 4 PtrToLNode list = NULL; 5 int data; 6 scanf("%d",&data); 7 if(data!=-1) 8 { 9 head = (PtrToLNode)malloc(sizeof(struct LNode));10 head->Data = data;11 head->Next = NULL;12 list = head;13 }14 scanf("%d",&data);15 while(data!=-1){16 PtrToLNode node;17 node = (PtrToLNode)malloc(sizeof(struct LNode));18 node->Data = data;19 node->Next = NULL;20 list->Next = node;21 list = node;22 scanf("%d",&data);23 }24 return head;25 }26 ElementType FindKth( List L, int K )27 {28 while(--K)29 {30 if(!L)return ERROR;31 L = L->Next;32 }33 if(L)return L->Data;34 return ERROR;35 }
链表之前接触的很少,所以做起题目来有些吃力,唉~ 要学习的东西还有好多啊~~~