zoukankan      html  css  js  c++  java
  • 剑指Offer:从尾到头打印链表

    题目1511:从尾到头打印链表

    时间限制:1 秒

    内存限制:128 兆

    特殊判题:

    提交:1082

    解决:350

    题目描述:

    输入一个链表,从尾到头打印链表每个节点的值。

    输入:

    每个输入文件仅包含一组测试样例。
    每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。

    输出:

    对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。

    样例输入:
    1
    2
    3
    4
    5
    -1
    
    样例输出:
    5
    4
    3
    2
    1
    【代码】


    1. /********************************* 
    2. *   日期:2013-10-18 
    3. *   作者:SJF0115 
    4. *   题号: 九度OJ 题目1511:从尾到头打印链表 
    5. *   来源:http://ac.jobdu.com/problem.php?pid=1511 
    6. *   结果:AC 
    7. *   来源:剑指Offer 
    8. *   总结: 
    9. **********************************/  
    10. #include<iostream>  
    11. #include<malloc.h>  
    12. #include<stdio.h>  
    13. #include<stack>  
    14. using namespace std;  
    15.   
    16. typedef struct ListNode{  
    17.     int value;  
    18.     struct ListNode *next;  
    19. }ListNode;  
    20.   
    21. //从尾到头输出链表  
    22. int ListReverse(ListNode *head){  
    23.     stack<int> stack;  
    24.     ListNode *p;  
    25.     p = head->next;  
    26.     //遍历链表,把每个节点数值添加到栈中  
    27.     while(p != NULL){  
    28.         stack.push(p->value);  
    29.         p = p->next;  
    30.     }  
    31.     //输出栈  
    32.     while(!stack.empty()){  
    33.         printf("%d ",stack.top());  
    34.         stack.pop();  
    35.     }  
    36.     return 0;  
    37. }  
    38.   
    39. int main()  
    40. {     
    41.     int i,n;  
    42.     //初始化  
    43.     ListNode *head = (ListNode *)malloc(sizeof(ListNode));  
    44.     ListNode *p;  
    45.     head->next = NULL;    
    46.     p = head;    
    47.     while(scanf("%d",&n)!= EOF){  
    48.         //n = -1一个测试用例的结束  
    49.         if(n != -1){  
    50.             //创建链表  
    51.             ListNode *newNode = (ListNode*)malloc(sizeof(ListNode));  
    52.             newNode->value = n;  
    53.             newNode->next = p->next;  
    54.             p->next = newNode;  
    55.             p = newNode;  
    56.         }  
    57.         //输出  
    58.         else{  
    59.             /*p = head->next; 
    60.             while(p != NULL){ 
    61.                 printf("%d ",p->value); 
    62.                 p = p->next; 
    63.             }*/  
    64.             //从尾到头输出  
    65.             ListReverse(head);  
    66.             //初始化  
    67.             head->next = NULL;  
    68.             p = head;  
    69.         }  
    70.     }  
    71.     return 0;  
    72. }  


    【解析】




  • 相关阅读:
    射频系统架构
    Tensorflow 2.0 mnist
    Lintcode 32. 最小子串覆盖 && Leetcode 76. Minimum Window Substring
    内存管理之智能指针unique_ptr&weak_ptr
    内存管理之智能指针shared_ptr
    内存管理之直接内存管理
    c++ 三大特性之继承
    稀疏矩阵乘法
    Linux环境下mysql常用命令
    字符串的查找删除
  • 原文地址:https://www.cnblogs.com/baoendemao/p/3804708.html
Copyright © 2011-2022 走看看