算法—查找倒数第k个链表的值

代码:

link.h

#pragma once
#define elemType int
#include<stdlib.h>
typedef struct link {elemType data;struct link * next;
}link;
bool initLink(link* &Link) {//初始化链表Link = (link*)malloc(sizeof(link));Link->next = NULL;if (!Link) {return false;}return true;
}
int getLinkElem(link* &Link,int i) {//获取链表的第i个元素link* p = Link;int j = 0;while (p&&j < i) {p = p->next;j++;}if (j >= i || !p) {return -1;}int v = p->data;return v;
}
bool LinkTailInsert(link* &Link, int i,int e) {//链表的第i个位置插入元素link* p = Link;link*s = (link*)malloc(sizeof(link));s->data = e;int j = 0;while (p&&j < i - 1) {p = p->next;j++;}if (!p || j > i - 1) {return false;}s->next = p->next;p->next = s;return true;
}
bool deleteLinkElem(link* &Link,int i) {//删除链表的第i个元素int j = 0;link* p = Link,*q;while (p&&j < i - 1) {p = p->next;j++;}if (!p || j > i - 1) {return false;}q = p->next;p->next = q->next;delete q;return true;
}
void printLink(link* Link) {//遍历链表link *p = Link->next;while (p) {printf("%d ", p->data);p = p->next;}printf("\n");
}

main.c

#include <stdio.h>
#include <stdlib.h>
#include"link.h"
int checkTheLastElem(link* Link, int k) {//查找链表中倒数第k个元素link *p = Link;//带头结点(头指针)link *q = Link;int count = 0;while (p) {if (count < k) {count++;}else {q = q->next;//q指针只有k>}p = p->next;//p指针一直移动}if (count < k) {printf("查找倒数第%d个元素失败\n",k);return 0;}else {printf("查找倒数第%d个元素成功!为%d\n", k,q->data);return 1;}
}
int main() {link* Link;initLink(Link);int i = 0;while (i<3) {int v;scanf_s("%d", &v);LinkTailInsert(Link, 1,v);i++;}printf("遍历链表:");printLink(Link);//遍历checkTheLastElem(Link, 1);//查找倒数第一个元素printf("\n");system("pause");return 0;
}

测试截图:

时间复杂度O(n),空间复杂度O(1)

如果存在什么问题,欢迎批评指正!谢谢!

算法---查找倒数第k个链表的值相关推荐

  1. 【融博笔试题】查找单链表倒数第k个结点的值

    继华赛之后,又一次倒在面试门前.基础不扎实就是不行啊! 下来做完这道题,顺便复习单链表.代码如下: //------------------------------------------------ ...

  2. 单向链表中查找倒数第K个数

    问题 单向链表如果要找某一元素或者遍历链表,只能从头节点开始,所以如果我们用普通方法查找倒数第K个数,要分两步:第一步:先遍历链表中元素的个数,第二步:从头开始遍历,遍历到链表个数-k个数; 用两个指 ...

  3. 单链表倒数第K个节点的查找和显示

    单链表倒数第K个节点的查找和显示 最近在学回顾之前学到的知识,正好碰到了关于链表查找的一道面试题,在此贴出来,与小伙伴们共同交流~ 在刚看到题目,其实很容易就想到一个方法,就是先求链表的长度(leng ...

  4. 拼题---求链式线性表的倒数第K项(两种算法的比较)

    7-17 求链式线性表的倒数第K项 (20 分) 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表 ...

  5. [剑指offer]面试题15:链表中倒数第k个结点

    面试题15:链表中倒数第k个结点 题目:输入一个链表,输出该链表中倒数第 k 个结点.为了符合大多数人的习惯,本题从1 开始计数,即链表的尾结点是倒数第1 个结点.例如一个链表有6个结点,从头结点开始 ...

  6. python代码找到链表的倒数第K个节点并打印

    python代码找到链表的倒数第K个节点并打印 在计算机科学中,链表是数据元素的线性集合,其顺序不是由它们在内存中的物理位置决定的.相反,每个元素指向下一个元素.它是一种数据结构,由一组节点组成,这些 ...

  7. Programming Ability Test学习 3-05. 求链式线性表的倒数第K项(15)

    3-05. 求链式线性表的倒数第K项(15) 时间限制 250 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 给定一系列正整数,请设计一个尽可能高效的算法, ...

  8. 求链式线性表的倒数第K项(堆栈解法)

    题目:给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理). 输 ...

  9. 7-4 求链式线性表的倒数第K项(最佳解法)(List容器)

    先看问题描述: 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处 ...

最新文章

  1. 菜鸟教程:C++ 的关键字(保留字)完整介绍
  2. mac 源生安装mysql_docker安装MySQL数据库
  3. redis 基础操作学习
  4. (53)zabbix模板
  5. 升级为Exchange 2007后怀念的10件事
  6. 用android做体质计算器,Android入门项目(一):BMI体质指数计算器
  7. 华为荣耀20和x10比较_荣耀X10和华为畅享20plus,到底哪个更值得入手?
  8. php将对象转换成数组
  9. 2019.01.13 bzoj4137: [FJOI2015]火星商店问题(线段树分治+可持久化01trie)
  10. 全面理解ThreadLocal
  11. 基于51单片机中文汉字LCD12864滚动显示屏仿真(源码+仿真+全套资料)
  12. 《MIT科技评论》“35位35岁以下科技创新青年”名单出炉!AI领域有5人入选 | 2020中国区...
  13. C语言用一维数组模拟抛硬币,模拟抛硬币(C语言实现)
  14. 苹果手机投影到墙上_电视VS投影仪,你会选哪个?
  15. fiftyone安装使用亲测
  16. 学习FPGA绝佳网站推荐
  17. 单工通信、半双工通信和双工通信
  18. 冯诺依曼原理奠定了至今仍然在使用的计算机,计算机二级MS-Office真题「选择题」...
  19. 非常经典的节选:施耐庵《鲁提辖拳打镇关西》
  20. argox打码机的pplb指令开发

热门文章

  1. 六、WebApp 二手信息站点页面制作(IVX 快速开发教程)
  2. 骆驼能站在鸡蛋上吗!?
  3. 什么就像谈恋爱一样?
  4. 为什么男性比女性死得更早,心疼一秒钟!
  5. 菜鸟学习数据科学家 5 大误区
  6. char varchar java_在数据库中varchar与char的区别
  7. 为什么不可以使用哈曼顿距离_请对比下欧式距离和曼哈顿距离的差别
  8. Java开发之上班摸鱼!写最少的代码!
  9. python bind sock_python SOCKET编程详细介绍
  10. mongodb时间范围查询少8个小时_为何要对开源mongodb数据库内核做二次开发