C语言实现输出链表中倒数第k个节点
2023-06-13 09:15:46 时间
本文实例展示了C++实现输出链表中倒数第k个节点的方法,分享给大家供大家参考之用。
运行本文所述实例可实现输入一个单向链表,输出该链表中倒数第k个节点。
具体实现方法如下:
/* *Copyright(c)2011alexingcool.AllRightsReserved. */ #include<iostream> usingnamespacestd; intarray[]={5,7,6,9,11,10,8}; constintsize=sizeofarray/sizeof*array; structNode { Node(inti=0,Node*n=NULL):item(i),next(n){} intitem; Node*next; }; Node*construct(int(&array)[size]) { Nodedummy; Node*head=&dummy; for(inti=0;i<size;i++){ Node*temp=newNode(array[i]); head->next=temp; head=temp; } returndummy.next; } voidprint(Node*head) { while(head){ cout<<head->item<<""; head=head->next; } } Node*findKnode(Node*head,intk) { Node*pKnode=head; if(head==NULL){ cout<<"linkisnull"<<endl; returnNULL; } while(k--){ if(head==NULL){ cout<<"kisbiggerthanthelengthofthelink"<<endl; returnNULL; } head=head->next; } while(head){ head=head->next; pKnode=pKnode->next; } returnpKnode; } voidmain() { Node*head=construct(array); cout<<"sourcelink:"; print(head); cout<<endl; Node*kNode=findKnode(head,5); if(kNode!=NULL) cout<<"theknodeis:"<<kNode->item<<endl; }
测试用例如下:
1.NULLLink
head=NULL;
2.normalLink,withnormalk
k<=len(head);
3.normalLink,withinvalidk
k>len(head)
希望本文所述对大家C程序算法设计的学习有所帮助。
相关文章
- C语言链表排序_C语言版数据结构链表
- 【RTOS训练营】课程学习方法和C语言知识(指针、结构体、函数指针、链表)和学员问题
- 蓝桥杯 历届试题 连号区间数-------------C语言—菜鸟级
- C语言链表和关键字typedef
- C语言运算符表达式和流程控制语句
- 【数据结构】带头双向循环链表的增删查改(C语言实现)
- [C语言] 数据结构-离散存储链表定义详解编程语言
- C语言之scarf函数详解编程语言
- Linux环境下C语言程序实现方式(linuxc文件运行)
- 数组名作为函数参数传递,C语言数组作为函数参数传递详解
- C语言动态内存管理和动态内存分配
- C语言玩转Linux:线程类深度开发(c线程类linux)
- Linux C语言实现字节对齐(linuxc字节对齐)
- C语言操作MySQL数据库中的Blob数据类型(c mysql blob)
- Linux下C语言环境搭建实战简介(linux下c 环境配置)
- 用C语言开发MySQL框架的实践(c mysql框架)
- 使用C语言读取Oracle数据库表信息(c 读取oracle表)
- 利用C语言编写Oracle触发器(c oracle触发器)
- C语言编写银行打印程序实例参考
- C语言实现静态链表的方法
- C语言单向链表的表示与实现实例详解
- C语言单循环链表的表示与实现实例详解
- C语言实现带头结点的链表的创建、查找、插入、删除操作