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

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

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


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


输入格式:


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


输出格式:


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


输入样例:


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


结尾无空行


输出样例:


7


结尾无空行


#include<iostream>
#include<vector>
using namespace std;
int main(){
  vector<int>v;
  int n;
  cin>>n;
  int num;
  while(cin>>num){
    if(num<0) break;
    v.push_back(num);
  }
  if(n<=v.size())cout<<v[v.size()-n]<<endl;
  else cout<<"NULL"<<endl;
  return 0;
}


#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
    int data;
    struct LNode *next;
}LNode,*LinkList;
int main()
{
    int temp;
    int k,cnt=0;
    LinkList L;
    L = (LinkList)malloc( sizeof ( struct LNode));
    LNode *s=L,*r=L,*p;
    scanf("%d",&k);
    int f=k;   //保护k的值
    while(1){
        scanf("%d",&temp);
        if( temp<0 ){
            break;
        }
        else{
            p=(LNode *)malloc(sizeof(LNode));
            p->data = temp;
            r->next = p;
            r = p;
            k--;
            cnt++;
            if( k<1){
                s= s->next;
            }
        }
    }
    if( f>cnt){
        printf("NULL");
    }
    else printf("%d",s->data);
     return 0;
}
目录
相关文章
|
7月前
|
存储
三种方法实现获取链表中的倒数第n个元素
三种方法实现获取链表中的倒数第n个元素
67 0
链表OJ题目1 (移除链表元素)
力扣(链接放这里喽)
49 0
|
7月前
|
存储 算法
【PTA刷题】求链式线性表的倒数第K项(代码+详解)
【PTA刷题】求链式线性表的倒数第K项(代码+详解)
215 0
【Leetcode -剑指Offer 22.链表中倒数第k个结点 -203.移除链表元素】
【Leetcode -剑指Offer 22.链表中倒数第k个结点 -203.移除链表元素】
36 0
|
存储 C++
剑指offer(C++)-JZ76:删除链表中重复的结点(数据结构-链表)
剑指offer(C++)-JZ76:删除链表中重复的结点(数据结构-链表)
|
存储 机器学习/深度学习 缓存
链表和有序二叉树插入元素时真的比数组快吗?
公司有位C++标准委员会的顾问大佬,一年会有几次视频讲座,分享一些编程要点或者经验。很多时候都是C++很基础的方面,但是他的讲解视频真的很深入浅出,有时候会“打破”一些理所应当的观点,这篇文章就是让我觉得很有趣,并且意想不到的地方,在这里分享一下。
链表和有序二叉树插入元素时真的比数组快吗?
链表oj题讲解(1)——移除链表元素
在初步给大家介绍链表之后,为了让大家更好的理解和巩固链表,小编这里会从易到难以此给大家带来一系列关于链表的oj题。那么接下来就让我们看看今天的例题。
69 1
1.移除链表元素 2.反转链表 3.链表的中间结点
1.移除链表元素 2.反转链表 3.链表的中间结点
72 0
【基础算法】单链表的OJ练习(3) # 移除链表元素 # 相交链表 #
【基础算法】单链表的OJ练习(3) # 移除链表元素 # 相交链表 #