从尾到头打印单链表

来源:互联网 发布:暂七师军乐队 知乎 编辑:程序博客网 时间:2024/04/27 05:10

从尾到头打印单链表其实就是后进先出,而栈(stack)就是后进先出的,从而可以利用栈来实现逆序打印单链表

//定义链表节点typedef struct ListNode{    int data;    struct ListNode * next;}Node,*PNode,**PPNode;

利用栈实现

#include<iostream>#include<stack>//使用栈必须包含using namespace std;void Print_Tail_Head_node(PNode _node){    stack<PNode> node;//定义一个栈    PNode tmp = _node;    while (tmp != NULL)    {        node.push(tmp);//入栈        tmp = tmp->next;    }    while (!node.empty())    {        tmp = node.top();//返回栈内的下一个元素        cout << tmp->data << " ";        node.pop();//出栈    }}

利用递归实现

递归的本质就是一个栈结构,从而可以用递归实现从尾到头打印单链表

void Print_Tail_Head_node(PNode _node){    if (_node != NULL)    {        if (_node->next != NULL)        {            Print_Tail_Head_node(_node->next);        }        cout << _node->data <<" ";    }}//如果链表非常长,不适合使用递归,会导致栈溢出
0 0
原创粉丝点击