首页 > 其他分享 >数据结构练习笔记——输出单链表倒数第k个元素

数据结构练习笔记——输出单链表倒数第k个元素

时间:2023-07-15 15:24:34浏览次数:39  
标签:Node 单链 int 元素 next 数据结构 倒数第

输出单链表倒数第k个元素

【问题描述】已知带头结点的非空单链表中存放着若干整数,请找出该链表中倒数第k个元素。
【输入形式】第一行:单链表中元素个数m,第二行:单链表中的m个整数,第三行:k值
【输出形式】倒数第k个元素的值(不存在倒数第k个元素输出"no")
【样例1】
输入 :
5
13 24 50 33 56
2
输出: 33
【样例2】
输入:
5
13 24 50 33 56
6
输出:no

#include  <iostream>
using  namespace  std;
struct  Node  {
	int  data;
	Node  *next;
};
typedef  Node  *LinkList;
void  createList(LinkList  &L,int  n)  {
	Node  *p,*r;
	L=new  Node;
	L->next=NULL;
	r=L;
	for(int  i=1;  i<=n;  i++)  {
		p=new  Node;
		cin>>p->data;
		r->next=p;
		r=p;
	}
	r->next=NULL;
}
void  printList(LinkList  L)  {
	Node  *p;
	p=L->next;
	while(p)  {
		cout<<p->data<<"  ";
		p=p->next;
	}
	cout<<endl;
}
//------找单链表中倒数第k个元素-------
Node* getElem(LinkList L,int k) {
	LinkList p=L;
	int length=0;
	while(p->next) {
		length++;
		p=p->next;
	}      //获取单链表的长度
	p=L;
	if(length-k<0) return NULL;//不存在倒数第k个元素
	for(int i=0; i<length-k+1; i++)//倒数第k个元素,即为顺数的length-k+1个元素
		p=p->next;
	return p;
}
//--------------------------------
int  main()  {
	LinkList  L;
	int  m,k;
	cin>>m;//单链表中元素个数
	createList(L,m);//尾插入法创建带头节点的单链表
	cin>>k;
	Node  *p=getElem(L,k);//找单链表中倒数第k个元素
	if(p)
		cout<<p->data;
	else
		cout<<"no";
	return  0;
}

记录一些数据结构学习过程的习题代码,便于日后查看。如有错误,欢迎交流指正。

标签:Node,单链,int,元素,next,数据结构,倒数第
From: https://www.cnblogs.com/zhuannnn/p/17556169.html

相关文章

  • 数据结构 查找 树形查找
    1.二叉排序树二叉排序树可以提高查找、插入和删除的效率。(1)二叉排序树(BST)的定义定义比较简单,左子树所有结点<根节点<右子树所有结点同时左右子树也分别都是二叉排序树特点:对二叉排序树进行中序遍历,可以得到一个递增有序序列。(2)二叉排序树的插入BST的插入是为了其构造而使......
  • 数据结构(第八章)
    数据结构(第八章)排序一、插入排序1.1、直接插入排序直接插入排序的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。代码展示:#defineMaxSize100//定义一个顺序表结构typedefstruct{intdata[MaxSize+1];//定义一个排序数......
  • 数据结构之线性表
    线性表的定义和操作线性表的定义    线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,则其一般表示为L=(a1,a2,...ai,ai+1,...an)几个概念:   相同是指每个数据元素所占空间一样大。   ai是线......
  • 严蔚敏 数据结构 配套教材 PDF
    目录严蔚敏数据结构配套教材PDF下载地址:严蔚敏数据结构配套教材PDF配套教材包括:严蔚敏《数据结构题集》(C语言版).pdf严蔚敏《数据结构》(C语言版)配套题库【名校考研真题+章节题库+模拟试题】严蔚敏《数据结构》(C语言版)笔记和习题(含考研真题)详解严蔚敏《数据结构》(C语言版......
  • go 给一个切片,将其写入到一个单链表中
    packagemainimport"fmt"//功能:实现一个单链表(给一个切片,将其写入到一个单链表中)typeNodestruct{ValueintNext*Node}funccreate(slice[]int)*Node{iflen(slice)==0{returnnil}node:=new(Node)node.Value=sl......
  • Redis底层数据结构
    Redis是什么?Redis是一个键值数据库,以“快”著称Redis是为什么这么快?我们都知道Redis很快,它在接收到一个键值对数据后,能以微妙级别的速度找到数据并快速完成操作。数据库这么多,为啥Redis能有这么突出的表现呢?一方面,这是因为它是内存数据库,所有操作都在内存上完成,内存的访问速......
  • 数据结构练习笔记——单链表的创建
    单链表的创建【问题描述】从键盘终端输入若干整数,为其创建带头节点的单链表存储结构【样例输入】51223323345【样例输出】1223323345【样例说明】第一行的数为单链表中元素的个数,后面为各元素的值#include<iostream>usingnamespacestd;structLNode{......
  • 数据结构之数据结构要学什么,基本概念,三要素
       我从大二上学期的时候学了数据结构,但是当时对数据结构的重要性并不太重视,直到在升大三的暑假,才意识到数据结构对以后学语言和找工作方面的重要性,所以亡羊补牢,为时未晚,尝试着结合b站上王道考研数据结构课,来记录自己对知识和代码的理解。  数据结构学习的内容可以理解......
  • 数据结构--查找
    数据结构--查找7.1查找的概念在哪里找?---查找表查找表是由同一类型的数据元素(或记录)构成的集合.由于"集合"中的数据元素之间存在着松散的关系,因此查找表是一种灵便的结构什么是查找?-----根据给定的某个值,在查找表中确定一个关键字等于给定值的数据元素或(记录).......
  • 数据结构学习5
    17、顺序查找①查找的基本概念基本概念查找表:由同一类型的数据元素(或记录)构成的集合查找:查询特定元素是否在表中查找成功:若表中存在特定元素,称查找成功,应输出该记录查找不成功:表中不存在给定值的元素,称查找不成功静态查找:只查找,不改变集合内的数据元素动态查找:......