码迷,mamicode.com
首页 > 其他好文 > 详细

7-19 求链式线性表的倒数第K项(20 分)(单链表定义与尾插法)

时间:2018-01-28 12:42:15      阅读:824      评论:0      收藏:0      [点我收藏+]

标签:clu   链式线性表   nod   struct   temp   body   size   int   线性表   

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

输入格式:

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

输出格式:

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

输入样例:

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

输出样例:

7

解题思路:寻找倒数第K项,这里所用的方法是定义两个指针,让第一个指针先走k步,然后两个指针一起移动,第一个指针移到末尾的时候,第二个指针就到了倒数第K个位置,输出第二个指针的值即可。

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 typedef struct LNode{
 5     int data;
 6     struct LNode *next;
 7 }LNode,*LinkList;
 8 
 9 int main()
10 {
11     int temp;
12     int k,cnt=0;
13     LinkList L;
14     L = (LinkList)malloc( sizeof ( struct LNode));
15     LNode *s=L,*r=L,*p;
16 
17     scanf("%d",&k);
18     int f=k;   //保护k的值
19     while(1){
20         scanf("%d",&temp);
21         if( temp<0 ){
22             break;
23         }
24         else{
25             p=(LNode *)malloc(sizeof(LNode));
26             p->data = temp;  
27             r->next = p;  
28             r = p;
29             k--;
30             cnt++;
31             if( k<1){
32                 s= s->next;
33             }
34         }
35     }
36     if( f>cnt){
37         printf("NULL");
38     }
39     else printf("%d",s->data);
40 
41      return 0;
42 }

 

7-19 求链式线性表的倒数第K项(20 分)(单链表定义与尾插法)

标签:clu   链式线性表   nod   struct   temp   body   size   int   线性表   

原文地址:https://www.cnblogs.com/yuxiaoba/p/8370700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!