查找链表倒数第N个结点的地址(C++)

原创 2008年03月18日 13:46:00
/*
 * Author : roof
 
*/

#include 
<stdio.h>

template 
<typename Elm>
struct Node {
    Elm elm;
    Node
* next;
}
;
template 
<typename Elm>
Node
<Elm>* lastPos(Node<Elm>* head, int num) {
    
if (num <= 0)
        
return 0;
    Node
<Elm>* move = head;
    Node
<Elm>* pre = move;
    Node
<Elm>* tmp;
    
int cnt = 0;
    
while (move) {
        tmp 
= move;
        
while (++cnt <= num) {
            move 
= move->next;
            
if (!move) {
                
if (cnt < num && tmp == head)
                    
return 0;
                
while (cnt-- > 0)
                    pre 
= pre->next;
                
return pre;
            }

        }

        pre 
= tmp;
        cnt 
= 0;
    }

    
return 0;
}

int main() {
    
int ilist[] = {123456};
    Node
<int> *head;
    Node
<int> *tmp, *move;
    
for (int i=0; i<6++i) {
        
if (0 == i) {
            head 
= new Node<int>;
            head
->elm = ilist[0];
            move 
= head;
        }

        tmp 
= new Node<int>;
        tmp
->elm = ilist[i];
        move
->next = tmp;
        move 
= tmp;
    }

    move
->next = 0;
    
for (int i=0; i<10++i) {
        printf(
"倒数第%d个 ", i);
        printf(
"%d ", (lastPos(head, i) ? lastPos(head, i)->elm : -1));
    }

    getchar();
    
return 0;
}

链表(5)----查找链表倒数第K个节点

1、链表定义 typedef struct ListElement_t_ { void *data; struct ListElement_t_ *next; } ListElem...
  • beitiandijun
  • beitiandijun
  • 2014年12月12日 10:36
  • 2498

面试题15:查找链表中倒数第k个结点

仅一次遍历查找链表中倒数第k个结点。
  • kekong0713
  • kekong0713
  • 2016年06月27日 14:25
  • 741

单链表操作之删除倒数第k个结点

****单链表操作之删除倒数第k个结点**** //函数功能:删除链表的倒数第k个结点;1 //自定义的结点结构体和头指针结构体: //函数原型:void DelKNode(pLin...
  • bitboss
  • bitboss
  • 2016年06月10日 18:28
  • 1630

LintCode 找到单链表倒数第n个节点

给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1. 设置2个指针,当第一个指针从表头向前走到第n-1个节点时,第二个指针开始从表头出发。当第一个指针走到尾节点时,...
  • sinat_30440627
  • sinat_30440627
  • 2016年03月27日 19:59
  • 817

如何找出单链表中的倒数第k个元素

如何找出单链表中的倒数第k个元素
  • jsqfengbao
  • jsqfengbao
  • 2015年04月04日 20:39
  • 3273

剑指Offer----面试题15:链表中倒数第K个结点

题目: 输入一个链表,输出该链表中倒数第K个结点。为了符合大多数人的习惯,本题从1开始计数,即聊表的尾结点是倒数第一个结点。例如一个链表6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。...
  • qianqin_2014
  • qianqin_2014
  • 2016年06月03日 23:17
  • 435

查找链表中倒数第k个节点,若查找成功,返回数据域的值

有两种思路: 思路一:首先遍历一遍链表,得到链表长度n,然后返回n-k+1个节点的数据域 思路二:定义两个指针p和q,都指向头节点的下一个节点,等到p移动到第k个节点,q和p同步移动,等到p移动到...
  • fandoudou123
  • fandoudou123
  • 2016年09月14日 09:46
  • 477

在单向链表中如何快速查到倒数第n个节点 这简直是一种神奇的思路!!!!leetcode 删除倒数第n个节点

在单向链表中如何快速查到倒数第n个节点? 操作方法和步骤: (1)定义2个指针p1,p2。 (2)使用循环让p2指向顺数第n个节点,同时p1指向第头结点; (3)然后,...
  • dd809477679
  • dd809477679
  • 2016年03月23日 16:06
  • 984

单向链表_找出倒数第K个节点

实现一个算法,找出单向链表中倒数第K个结点。
  • z597372259
  • z597372259
  • 2014年10月23日 20:48
  • 1905

查找单链表倒数第k个元素

查找单链表倒数第m个结点,要求时间复杂度为O(n).(提示,使用双指针) 解题思路: 常规思路为先获取链表的长度N,然后返回N-k+1位置处的结点即可。但是中需要遍历两次链表。 我们使用另一种算法...
  • undersky_chen
  • undersky_chen
  • 2016年02月23日 13:38
  • 640
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:查找链表倒数第N个结点的地址(C++)
举报原因:
原因补充:

(最多只允许输入30个字)