zoukankan      html  css  js  c++  java
  • 数据结构与算法题目集(中文)7-19 求链式线性表的倒数第K项 (20分)

    1.题目

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

    输入格式:

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

    输出格式:

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

    输入样例:

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

    输出样例:

    7

    2.题目分析

    1.题目难就难在链表不知道数据的总长度是多少,所以倒数第K个也不知道,因此使用两个指针,一个正常使用尾插法向后插入,当插入的元素个数达到K个之后,第二个指针开始从头向后指☞,这样当前面的指针到达数据末尾的时候,第二个指针就到达了倒数第K项,直接输出第二个指针的数据就可以了。

    3.代码

    #include<iostream>
    using namespace std;
    typedef struct LNode{
       int data;
      struct LNode *next;
    }LNode, *LinkList;
    int main()
    {
    	int temp;
    	int k;
    	cin >> k;
    	LinkList l = (LNode*)malloc(sizeof(LNode));
    	l->next = NULL;
    	LinkList rear = l;
    	LinkList rear2 = l;
    	int count = 0;
    	while (cin >> temp)
    	{
    		count++;
    		if (temp < 0)break;
    		LinkList p = (LNode*)malloc(sizeof(LNode));
    		p->data = temp;
    		p->next = NULL;
    		rear->next = p;
    		rear = rear->next;
    		
    		if (count >= k)
    			rear2 = rear2->next;
    	}
    	if (rear2 != l)
    		cout << rear2->data;
    	else
    		cout << "NULL";
    
    }
    
    
  • 相关阅读:
    [leetcode]Reverse Words in a String
    [leetcode]ZigZag Conversion
    [leetcode]Gray Code
    [leetcode]Permutation Sequence
    [leetcode]Next Permutation
    [leetcode]PermutationsII
    [leetcode]Add Two Numbers
    Python与PHP通过XMLRPC进行通信
    最近发现了个js传图预览的函数和大家分享下
    百度地图api2.0体验
  • 原文地址:https://www.cnblogs.com/Jason66661010/p/12789016.html
Copyright © 2011-2022 走看看