求链式线性表的倒数第K项

来源:互联网 发布:淘宝网 布料 编辑:程序博客网 时间:2024/05/23 12:17

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

输入格式:

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

输出格式:

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

输入样例:

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

输出样例:

7 代码: 
#include<stdio.h>#include<stdlib.h>struct node{int data;struct node*next;};typedef struct node* List;List Creat(){int n;List head,p,q;head=(List)malloc(sizeof(struct node));q=head;while(scanf("%d",&n)!=EOF){if(n<0) break;  //不能以n==-1 作为结束条件 如果n==-2 也不符合 p=(List)malloc(sizeof(struct node));p->data=n;q->next=p;q=p;}q->next=NULL;return head;}void Find(List head,int k){int i;List p=head,q=head;for(i=0;i<k;i++){    p=p->next;if(p==NULL) break;}if(p==NULL) printf("NULL\n");else{while(p!=NULL){p=p->next;q=q->next;}printf("%d\n",q->data);}}int main(){int k;scanf("%d",&k);List head = Creat();Find(head,k);return 0;}


原创粉丝点击