7-2 求链式线性表的倒数第K项 (20 分)
时间限制: 400 ms 内存限制: 64 MB 代码长度限制: 16 KB
给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。
输入格式:
输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。
输出格式:
输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL
。
输入样例:
4 1 2 3 4 5 6 7 8 9 0 -1
输出样例:
7
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Node *Node;
struct Node
{
int data;
Node Next;
};
int main()
{
int n,d,c = 0;
scanf("%d",&n);
Node temp = (Node)malloc(sizeof(struct Node)),q;
temp -> Next = NULL;
q = temp;
while(scanf("%d",&d)!=EOF&&d >= 0)
{
Node p = (Node)malloc(sizeof(struct Node));
p -> data = d;
p -> Next = NULL;
q -> Next = p;
q = p;
c ++;
if(c >= n)
{
Node t = temp;
temp = temp -> Next;
free(t);
}
}
if(c >= n)printf("%d",temp -> data);
else printf("NULL");
}