zoukankan      html  css  js  c++  java
  • JZ-C-05

    剑指offer第五题:从尾到头打印链表:利用栈的‘后进先出’/递归

     1 //============================================================================
     2 // Name        : JZ-C-05.cpp
     3 // Author      : Laughing_Lz
     4 // Version     :
     5 // Copyright   : All Right Reserved
     6 // Description : Hello World in C++, Ansi-style
     7 //============================================================================
     8 
     9 #include <iostream>
    10 #include <iomanip>
    11 #include <stack>
    12 #include  <list>
    13 using namespace std;
    14 
    15 typedef struct SNode {
    16     int data;
    17     struct SNode *next;
    18 } NODE;
    19 
    20 /*从尾到头打印链表:递归*/
    21 void PrintListReverse1(NODE * head) {
    22     if (head != NULL) {
    23         if (head->next != NULL) {
    24             PrintListReverse1(head->next); //递归
    25         }
    26         cout << head->data << setw(3);
    27     }
    28 }
    29 /*从尾到头打印链表:利用栈的后进先出特点*/
    30 void PrintListReverse2(NODE *head) {
    31     std::stack<NODE*> nodes; //创建一个栈,存入NODE*类型的元素
    32     NODE *p = head;
    33     while (p != NULL) {
    34         nodes.push(p); //压入栈中
    35         p = p->next;
    36     }
    37     while (!nodes.empty()) {
    38         cout <<nodes.top()->data << setw(3); //'后进先出'出栈
    39         nodes.pop();
    40     }
    41 }
    42 /*建立一个单链表*/
    43 NODE* CreatList() {
    44     NODE *node1 = new NODE();
    45     NODE *node2 = new NODE();
    46     NODE *node3 = new NODE();
    47     NODE *node4 = new NODE();
    48     NODE *node5 = new NODE();
    49     node1->data = 1;
    50     node2->data = 2;
    51     node3->data = 3;
    52     node4->data = 4;
    53     node5->data = 5;
    54     node1->next = node2;
    55     node2->next = node3;
    56     node3->next = node4;
    57     node4->next = node5;
    58     node5->next = NULL;
    59     return node1;
    60 }
    61 int main() {
    62     NODE *head = CreatList();
    63 //    NODE *head = NULL;
    64     PrintListReverse2(head);
    65     return 0;
    66 }
    —————————————————————————————————————行走在人猿的并行线——Laughing_Lz
  • 相关阅读:
    十五、docker的隔离namespace和资源限制cgroup
    十四、docker-compose
    十三、搭建SSL的私有harbor仓库
    帆软常用JS
    oracle_ cursor.executemany
    sql常用语句
    考勤清洗
    JAVA基础教程day03--运算符
    B站视频爬虫
    ES6
  • 原文地址:https://www.cnblogs.com/Laughing-Lz/p/5502754.html
Copyright © 2011-2022 走看看