算法---查找倒数第k个链表的值
算法—查找倒数第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个链表的值相关推荐
- 【融博笔试题】查找单链表倒数第k个结点的值
继华赛之后,又一次倒在面试门前.基础不扎实就是不行啊! 下来做完这道题,顺便复习单链表.代码如下: //------------------------------------------------ ...
- 单向链表中查找倒数第K个数
问题 单向链表如果要找某一元素或者遍历链表,只能从头节点开始,所以如果我们用普通方法查找倒数第K个数,要分两步:第一步:先遍历链表中元素的个数,第二步:从头开始遍历,遍历到链表个数-k个数; 用两个指 ...
- 单链表倒数第K个节点的查找和显示
单链表倒数第K个节点的查找和显示 最近在学回顾之前学到的知识,正好碰到了关于链表查找的一道面试题,在此贴出来,与小伙伴们共同交流~ 在刚看到题目,其实很容易就想到一个方法,就是先求链表的长度(leng ...
- 拼题---求链式线性表的倒数第K项(两种算法的比较)
7-17 求链式线性表的倒数第K项 (20 分) 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表 ...
- [剑指offer]面试题15:链表中倒数第k个结点
面试题15:链表中倒数第k个结点 题目:输入一个链表,输出该链表中倒数第 k 个结点.为了符合大多数人的习惯,本题从1 开始计数,即链表的尾结点是倒数第1 个结点.例如一个链表有6个结点,从头结点开始 ...
- python代码找到链表的倒数第K个节点并打印
python代码找到链表的倒数第K个节点并打印 在计算机科学中,链表是数据元素的线性集合,其顺序不是由它们在内存中的物理位置决定的.相反,每个元素指向下一个元素.它是一种数据结构,由一组节点组成,这些 ...
- Programming Ability Test学习 3-05. 求链式线性表的倒数第K项(15)
3-05. 求链式线性表的倒数第K项(15) 时间限制 250 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 给定一系列正整数,请设计一个尽可能高效的算法, ...
- 求链式线性表的倒数第K项(堆栈解法)
题目:给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理). 输 ...
- 7-4 求链式线性表的倒数第K项(最佳解法)(List容器)
先看问题描述: 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处 ...
最新文章
- 菜鸟教程:C++ 的关键字(保留字)完整介绍
- mac 源生安装mysql_docker安装MySQL数据库
- redis 基础操作学习
- (53)zabbix模板
- 升级为Exchange 2007后怀念的10件事
- 用android做体质计算器,Android入门项目(一):BMI体质指数计算器
- 华为荣耀20和x10比较_荣耀X10和华为畅享20plus,到底哪个更值得入手?
- php将对象转换成数组
- 2019.01.13 bzoj4137: [FJOI2015]火星商店问题(线段树分治+可持久化01trie)
- 全面理解ThreadLocal
- 基于51单片机中文汉字LCD12864滚动显示屏仿真(源码+仿真+全套资料)
- 《MIT科技评论》“35位35岁以下科技创新青年”名单出炉!AI领域有5人入选 | 2020中国区...
- C语言用一维数组模拟抛硬币,模拟抛硬币(C语言实现)
- 苹果手机投影到墙上_电视VS投影仪,你会选哪个?
- fiftyone安装使用亲测
- 学习FPGA绝佳网站推荐
- 单工通信、半双工通信和双工通信
- 冯诺依曼原理奠定了至今仍然在使用的计算机,计算机二级MS-Office真题「选择题」...
- 非常经典的节选:施耐庵《鲁提辖拳打镇关西》
- argox打码机的pplb指令开发