【数据结构基础】链表的倒数第M个结点的查找
2010-09-25 13:24
253 查看
目标:在一个给定的链表中用o(n)级的算法,找到倒数第M个结点。
方法:利用俩个指针,指针距离M,然后从指针头同步后移,直到有一个指针指向链表尾为止。
注意:判断指针是否移动到链表尾结点的标志是elem->next==null,倒数第M个节点的定义,这直接关系到,同时后移的两个节点之间的间距。
代码:
element *FindMToLashElement(element *head, int m)
{
element *curPos=head;
element *mCurPos;
if(!head)
return 0;
for(int i=0;i<m;i++)
if(curPos->next)
curPos=curPos->next;
else
return 0;
mCurPos=curPos;
curPos=head;
while(mCurPos->next)
{
mCurPos=mCurPos->next;
curPos=curPos->next;
}
return curPos;
}
方法:利用俩个指针,指针距离M,然后从指针头同步后移,直到有一个指针指向链表尾为止。
注意:判断指针是否移动到链表尾结点的标志是elem->next==null,倒数第M个节点的定义,这直接关系到,同时后移的两个节点之间的间距。
代码:
element *FindMToLashElement(element *head, int m)
{
element *curPos=head;
element *mCurPos;
if(!head)
return 0;
for(int i=0;i<m;i++)
if(curPos->next)
curPos=curPos->next;
else
return 0;
mCurPos=curPos;
curPos=head;
while(mCurPos->next)
{
mCurPos=mCurPos->next;
curPos=curPos->next;
}
return curPos;
}
相关文章推荐
- 【数据结构】单链表—链表中倒数第K个结点 — 快慢指针
- 数据结构之快慢指针查找链表中间结点
- 数据结构——算法之(004)(输入一个单向链表,输出该链表中倒数第k个结点)
- 查找单链表中的倒数第m个结点
- 数据结构基础3_带头结点的单链表
- 结构之美:查找单链表指定位置结点的数据
- 【数据结构作业二】写出单链表结点的结构体类型定义及查找、插入、删除算法,并以单链表作存储结构,实现有序表的合并
- 数据结构之链表面试题汇总(一)--查找单向链表的中间节点、倒数第K个节点
- 数据结构与算法:链表基础
- 数据结构基础温故-6.查找(下):哈希表
- 数据结构基础(4)顺序表.链表.栈
- 程序员面试题100题第09题——查找链表中倒数第K个结点
- 程序员面试宝典之数据结构基础----④单链表排序(读后)
- 数据结构——带头结点链表和不带头结点链表操作比较
- 【学习点滴-数据结构-单链表】 求单链表的中间元素和倒数第k个元素
- 【链表】查找链表倒数第k个结点,要求只能遍历一次
- 数据结构基础(12) --双向循环链表的设计与实现
- 查找单链表中倒数第m个元素
- 基础数据结构之数组和链表(三)
- 查找链表中倒数第k个结点