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

Posted yuxiaoba

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7-19 求链式线性表的倒数第K项(20 分)(单链表定义与尾插法)相关的知识,希望对你有一定的参考价值。

给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第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 分)(单链表定义与尾插法)的主要内容,如果未能解决你的问题,请参考以下文章

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

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

PTA数据结构与算法题目集(中文) 7-19

PTA 程序设计天梯赛(101~120题)

HBU-DS实验题解目录(断更博主不{月}定{考}期{周}回归)

习题3.5 求链表的倒数第m个元素(20 分)浙大版《数据结构(第2版)》题目集