返回单链表的倒数第n个节点
2016-02-23 11:52
351 查看
struct list_node {
struct list_node *next;
void *data;
};
/*
这个函数的名字起得不是特别的好。
功能就是返回单链表倒数第n个节点。
参数说明:
struct list_node *head:单链表头指针
unsigned int pos:倒数的个数
*/
struct list_node *get_last_nth_node(struct list_node *head, unsigned int pos)
{
struct list_node *ret = head;
unsigned int i = 0;
/* 向前步进pos个节点,因为链表个数可能不足,所以需要判断head值是否有效 */
while (head && i < pos) {
++i;
head = head->next;
}
/* head为NULL的话,说明链表个数不足,返回NULL */
if (!head) {
return NULL;
}
/*
让ret与head同步向后步进,这样保证了ret与head之间的距离为pos。
这样当head到达最后一个节点的时候,ret即为所求的值。
*/
while (head->next) {
ret = ret->next;
head = head->next;
}
return ret;
}
struct list_node *next;
void *data;
};
/*
这个函数的名字起得不是特别的好。
功能就是返回单链表倒数第n个节点。
参数说明:
struct list_node *head:单链表头指针
unsigned int pos:倒数的个数
*/
struct list_node *get_last_nth_node(struct list_node *head, unsigned int pos)
{
struct list_node *ret = head;
unsigned int i = 0;
/* 向前步进pos个节点,因为链表个数可能不足,所以需要判断head值是否有效 */
while (head && i < pos) {
++i;
head = head->next;
}
/* head为NULL的话,说明链表个数不足,返回NULL */
if (!head) {
return NULL;
}
/*
让ret与head同步向后步进,这样保证了ret与head之间的距离为pos。
这样当head到达最后一个节点的时候,ret即为所求的值。
*/
while (head->next) {
ret = ret->next;
head = head->next;
}
return ret;
}
相关文章推荐
- 万兆网络测试iperf与TCP窗口,带宽瓶颈
- Android墨迹3.0特性介绍效果实现——做一个垂直滚动的Layout
- 代理模式
- 前端Mvvm QC 设计解析
- sparseArray 遍历
- JavaScript简单实现鼠标移动切换图片的方法
- windows7系统下Python环境的搭建
- Java笔记20:迭代器模式
- 设计模式-------单例模式
- Jenkins进阶系列之——12修改Jenkins权限控制
- 刮刮卡案例
- PyQt4入门教程(4)_布局管理
- Oracle成长点点滴滴(3)— 权限管理
- gulp 在 angular 项目中的使用
- yum安装以及adb安装
- 明白python文件如何组织,理解建立源文件
- js判断是否是闰年
- 基于c++实现的几种排序算法
- Linux上安装oracle客户端instantclient-11.2.0.4.0的笔记
- 安卓动态调试七种武器之离别钩 – Hooking(下)