链表面试题(五)---寻找链表的倒数第k个结点O(N)
来源:互联网 发布:帝国cms视频 模版 编辑:程序博客网 时间:2024/06/06 01:10
一、结构体定义:
typedef struct ListNode//定义结点{ DataType data; struct ListNode* next;}ListNode,*PListNode;typedef struct PList//定义一个成员是指向结点的指针的结构体{ PListNode PHead;}PList,*PList;
二、函数实现
思路:定义两个指针a,b,一开始都指向链表的第一个结点,然后让a指针以每次走一个结点的走法,先走k-1步,此时b指针仍然在第一个结点处,这时这两个指针之间相差k-1个结点,然后让两个指针都以每次走一步的走法同时向前走,直到a指针走到尾部,此时b指针所指向的结点,就是链表倒数第k个结点;(个人觉得就是拿了一个k厘米的尺子,从链表的尾部丈量k距离的结点)
PListNode FindKNode(PList PList,int k){ PListNode front=NULL; PListNode back=NULL; PListNode del=NULL; int i=0; assert(PList); front=PList->PHead; back=PList->PHead; if (PList->PHead==NULL||k<=0)//如果是空链表或者k<=0 { return NULL; } else //如果不是空链表,k>0 { for(i=1;i<k;i++) //front先走到k-1步 { if (front) { front=front->next; } else//当k的值大于结点个数 { return NULL; } } while (front->next) { front=front->next; back=back->next; } return back; }}
阅读全文
0 0
- 链表面试题(五)---寻找链表的倒数第k个结点O(N)
- 链表面试题---删除倒数第k个结点、逆置单链表
- 链表面试题(六)---删除单链表倒数第k个结点
- 寻找链表倒数第K个结点
- 数据结构之链表面试题汇总(一)--查找单向链表的中间节点、倒数第K个节点
- 找链表的中间结点和倒数第k个结点(链表笔试题面试题)
- 链表倒数第k个结点
- 链表倒数第n个结点
- 链表面试题/逆置/反转单链表+查找单链表的倒数第k个节点
- 查找链表的倒数第K个结点
- 链表的倒数第K个结点--双指针
- 找出链表的倒数第K个结点
- 链表倒数的第K个结点
- offer面试题二-----寻找链表的倒数第K个节点
- 链表的倒数第K个结点(一次遍历)
- 删除链表的倒数第n个结点
- 寻找链表的倒数第k个节点
- 寻找单向链表的倒数第k个节点
- Sass嵌套时调用父选择器
- IPC之消息队列
- 入门 Webpack,看这篇就够了
- 五分钟理解Java的反射API
- Struts2_请求参数接收
- 链表面试题(五)---寻找链表的倒数第k个结点O(N)
- java中数组复制的几种常见用法
- Java并发编程(十二)——锁优化
- 线程
- Explanation of javascript expression evaluation
- mysql入门(级联二十二)
- linux内存管理信息buddyinfo和slabinfo和zoneinfo
- HDU.2256 Problem of Precision (矩阵快速幂)
- 让Mac OS X的终端多姿多彩