查找链表倒数第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;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

数据结构与算法(4)——查找链表中倒数第n个结点

题目:查找链表中倒数第n个结点

小程序:删除单链表中倒数第n个结点

#include #include #include #include using namespace std; struct ListNode { int val; ...

查找链表中倒数第k个结点

例如有一个链表一共有6个结点,从头开始他们的值依次是1、2、3、4、5、6,那么这个链表的倒数第三个结点是值为4的结点。 首先看到这个题目,我们也许会想到从链表的尾端开始遍历,回溯K步,可是这个链表...

查找并输出单链表的倒数第k个结点

要输出单链表的倒数第k个结点,可以先遍历整个链表,求出链表大小,假设链表大小是n,再次遍历链表n-k+1次,这个链表就是我们要输出的链表结点,但是发现实现这个功能需要遍历两次。改进一次遍历完成输出倒数...

【融博笔试题】查找单链表倒数第k个结点的值

继华赛之后,又一次倒在面试门前。基础不扎实就是不行啊! 下来做完这道题,顺便复习单链表。代码如下:   //-------------------------------------------...

查找单链表中倒数第k个结点

本文转自:程序员面试题6--查找链表中倒数第k个结点 题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下: struct ListNode {...

单链表查找倒数第i个结点,linux纯C实现

本例中使用的单链表库是自己编写的,在前面博文中有提到过: http://blog.csdn.net/lvjing2/article/details/14045011 这次关于单链表的算法,就是引用这...

009-查找链表中倒数第k个结点

// 009.cpp : Defines the entry point for the console application. // #include "stdafx.h" #inclu...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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