4-4 链式表的按序号查找 (10分)

来源:互联网 发布:淘宝店主首页寄语 编辑:程序博客网 时间:2024/06/05 14:35

注意:这个题目以1开始

本题要求实现一个函数,找到并返回链式表的第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 <stdio.h>#include <stdlib.h>#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

以下为解答

#include <stdio.h>#include <stdlib.h>#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;}List Read(){  int num = 0;  scanf( "%d",&num );  if( -1 == num  ){    return NULL;  }  List list = ( List )malloc( sizeof( struct LNode ) );  List last = list;  list->Data = num;  list->Next = NULL;  scanf( "%d",&num );  while( -1 != num  ){    PtrToLNode node = ( List )malloc( sizeof( struct LNode ) );    node->Data = num;    node->Next = NULL;    last->Next = node;    last = node;    scanf( "%d",&num );  }  return list;}ElementType FindKth( List L, int K ){    //查找,计数,返回第k个,以1开始    int count=0;    while(L!=NULL)    {        count++;        if(count==K)        {            return L->Data;        }        L=L->Next;    }    return ERROR;}
0 0
原创粉丝点击