PTA 7-2 求链式线性表的倒数第K项 (20 分)

    xiaoxiao2022-06-25  180

    给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。

    输入格式:

    输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。

    输出格式:

    输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL。

    输入样例:

    4 1 2 3 4 5 6 7 8 9 0 -1

    输出样例:

    7 #include <stdio.h> #include <stdlib.h> typedef struct ListNode { int data; struct ListNode *next; }ListNode; ListNode *createlist()//建立链表? { ListNode *l=NULL,*p=NULL;//l一定设置为空值? int num; while(1) { scanf("%d",&num); if(num<0) return l; p=(struct ListNode*)malloc(sizeof(struct ListNode)); p->data=num; p->next=l; l=p;//l节点指向新的尾节点 ,类似于下移? } }; int Find(struct ListNode *L,int K) { int i; struct ListNode *p=NULL; if(L==NULL) return -1; if(K<=0) return -1; p=L; for(i=1;i<K;i++) { if(p->next==NULL) break; else p=p->next; } if(i<K) return -1; else return p->data;//找到需要输出的那个值返回 } int main() { ListNode *l = NULL; int k,num; scanf("%d",&k); l=createlist(); num=Find(l,k); if(num==-1) printf("NULL"); else printf("%d",num); return 0; }

     


    最新回复(0)