单链表的反向

原创 2007年09月23日 19:49:00

给定单链表的头指针Head,可以将链表反向,一种方法利用指针直接赋值,一种借助stack先进后出的特性

 

#include<iostream>
#include
<stack>
using namespace std;

struct node
...{
    
int i;
    node
* next;
}
;

void reverse1(node** head)
...{
    node
* p1;
    node
* p2;
    p1
=*head;
    p2
=p1->next;
    (
*head)->next=NULL;
    
while(p2)
    
...{
        p1
=p2->next;
        p2
->next=*head;
        
*head=p2;
        p2
=p1;
    }


}

void reverse2(node** head)
...{
    stack
<node*> S;
    node
* temp=*head;
    
while(temp)
    
...{
        S.push(temp);
        temp
=temp->next;
    }

    
*head=S.top();
    S.pop();
    temp
=*head;
    
while(!S.empty())
    
...{
        temp
->next=S.top();
        S.pop();
        temp
=temp->next;
        temp
->next=NULL;
    }

}


int main()
...{

    node
* head=new node;
    head
->i=0;
    head
->next=NULL;
    node
* temp=head;
    
int i;
    
for(i=1;i<10;++i)
    
...{
        temp
->next=new node;
        temp
=temp->next;
        temp
->i=i;
        temp
->next=NULL;
    }


    temp
=head;
    
while(temp)
    
...{
        cout
<<temp->i<<endl;
        temp
=temp->next;
    }


    reverse1(
&head);
    temp
=head;
    
while(temp)
    
...{
        cout
<<temp->i<<endl;
        temp
=temp->next;
    }


    reverse2(
&head);
    temp
=head;
    
while(temp)
    
...{
        cout
<<temp->i<<endl;
        temp
=temp->next;
    }



    
return 0;
}


 

剑指offer 反向遍历链表

#include #include #include #include #include #include using namespace std; //链表的反遍历,利用栈 struc...
  • u014787301
  • u014787301
  • 2016年03月27日 20:47
  • 464

单链表逆向打印

/*输入一个链表的头结点,从尾到头反过来打印出每个结点的值*/ struct ListNode{ int m_nKey; ListNode* m_pNext; }; #include "vec...
  • u012420309
  • u012420309
  • 2016年05月12日 21:40
  • 388

单链表的反向输出

问题 有一个带头结点的单链表,编写算法实现从尾到头反向输出每个结点的值 思路一 对于单链表而言只能顺着指针域next顺序往下搜索,所以我的第一个思路是先顺序遍历一遍将所有的数据保存在一个数组中...
  • qq_14998713
  • qq_14998713
  • 2016年08月02日 17:35
  • 1004

【题目30】反向输出一个单链表的值

分析:解决的方法有很多,           1. 可以将单链表逆转,然后输出           2. 可以使用栈,将单链表中的节点值先压栈,然后输出           3. 使用递归的方法voi...
  • hopestar2
  • hopestar2
  • 2009年10月07日 21:18
  • 2431

将一个单向链表反向链接

        其实是一个很简单的题目,不过我用递归实现了一下,个人感觉写的挺漂亮的,于是就决定贴出来秀一下,呵呵,代码如下: //这是个公共函数,也就是你需要的接口public void rever...
  • andycpp
  • andycpp
  • 2007年08月14日 00:53
  • 3335

使用单向链表实现LinkedList

单向链表是指节点中的指针域只有一个,指针域只能沿着同一个方向移动的链表。Java.util包中提供了LinkedList,此LinkedList是基于双向链表实现的。本文基于单向链表实现LinkedL...
  • lixingtao0520
  • lixingtao0520
  • 2017年10月26日 22:39
  • 116

反向输出一个链表(链表逆置)

/* This file was made for Link_list Exp on Linux Main.cpp  Founded in others' Blog ,Thanks for ...
  • Namer_Mega
  • Namer_Mega
  • 2014年12月17日 10:27
  • 1429

数据结构与算法-----单向线性链表(逆转和反向打印)

单向链表没有前指针,所以实现反向打印还是比较麻烦,我们这里使用递归原理解决此问题。 这里提到逆转,也就是将单链表的next指针指向前一个节点,我们也使用递归实现。// 练习:实现单向线性链表的建立、...
  • u010193457
  • u010193457
  • 2015年12月01日 17:05
  • 1469

Leetcode002--单链表两数相加

LeetCode程序之二,将两个链表的对应位相加,并将观察结果是否会产生进位
  • jinhuoxingkong
  • jinhuoxingkong
  • 2016年09月19日 12:30
  • 588

逆向输出链表

在不改变链表结构的前提下,使用一个后进先出的数据结构(栈)存储正向遍历链表的结果,根据后进先出的特点:最后一个进入的数据最先被弹出,可以逆向打印出链表。我们也可以根据递归来逆向输出链表。#includ...
  • yang20141109
  • yang20141109
  • 2015年10月16日 20:34
  • 1163
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单链表的反向
举报原因:
原因补充:

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