逆序输出问题

转载 2015年07月10日 17:09:52

一,题目
输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:

struct ListNode
{
      int       m_nKey;
      ListNode* m_pNext;
};

二,分析

解法一:把链表中链接结点的指针反转过来,改变链表的方向。然后就可以从头到尾输出了。参考 
解法二:从头到尾遍历链表,每经过一个结点的时候,把该结点放到一个栈中。当遍历完整个链表后,再从栈顶开始输出结点的值,此时输出的结点的顺序已经反转过来了。该方法需要维护一个额外的栈,实现起来比较麻烦。
解法三:递归本质上就是一个栈结构。于是很自然的又想到了用递归来实现。要实现反过来输出链表,我们每访问到一个结点的时候,先递归输出它后面的结点,再输出该结点自身,这样链表的输出结果就反过来了。

三,代码
基于这样的思路,不难写出如下代码:

#include <iostream>
using namespace std; 
void print(char *str)
{
        if(*(str+1)!='\0')
             print(str+1);

         printf("%c ",str[0]);  
}
int  getlength(char *str)
{
    if(*str=='\0')
        return 0;
    else
        return getlength(str+1)+1;  
} 
int main()
{
    char *str="abcde"; 
    cout<<getlength(str)<<endl;
    print(str); 
} 

3.1 单链表的逆序输出代码

void PrintfReverse(node* head)
{
    if(head!=NULL)
    {
        if(head->next == NULL)
        {
            std::cout<<head->data<<" ";
        }
        else
        {
            PrintfReverse(head->next);
            std::cout<<head->data<<" ";
        }   
    }
}

输入十个数字,然后逆序输出

01./* * 程序的版权和版本声明部分: 02.* Copyright (c) 2011, 烟台大学计算机学院 03.* All rights reserved. 04...
  • u012365984
  • u012365984
  • 2013年10月28日 12:37
  • 2178

数组_习题:将输入的字符串逆序输出

# include # include int main(void){ char c, str[40]; //数组大小根据情况定义; int i, lenght; printf("Input str...
  • u010345869
  • u010345869
  • 2014年04月14日 10:57
  • 1618

单链表的逆序输出

从尾到头打印单链表.           这里只是简单写了一个可以实现正常功能的单链表,(未实现析构函数)由于单链表只能一般从前向后遍历,这样按题目的要求先访问者后输出,正好与栈的的功能相同,用栈能解...
  • renchunlin66
  • renchunlin66
  • 2016年04月03日 21:23
  • 473

将一个数组逆序输出

将一个数组逆序输出: package demo40; import java.util.Scanner; /** * 将一个数组逆序输出 * @author Administrator *...
  • bj15114817915
  • bj15114817915
  • 2017年03月29日 14:26
  • 1288

C语言逆序输出某个数字

使用C语言来逆序输出某个数字的事例代码。
  • liaoqix
  • liaoqix
  • 2015年06月29日 14:49
  • 3899

【面试算法系列】逆序输出一个单链表 - C语言实现

将一个单链表的内容逆序输出,考虑到当一个链表的元素打印之前将该元素的前一个元素打印,运用这个思路可以使用递归来实现该功能,(不过该方法仍然存在,问题,当链表过长会导致栈溢出问题)代码如下: /* ...
  • SolemnKyle
  • SolemnKyle
  • 2015年09月08日 17:13
  • 2336

C++实现string类字符串单词的逆序输出

利用c++实现string类字符串单词的逆序输出
  • Forbes_Zhong
  • Forbes_Zhong
  • 2016年04月20日 17:01
  • 1900

关于c语言逆序输出

我的妹妹今年刚上大一,对编程完全不了解,仅此献给和我妹妹一样的新手们 题目要求:输入一个数n,将n逆序输出,例如“321”,输出“123” 1   #include 2   #inclu...
  • kkk109A
  • kkk109A
  • 2015年10月15日 19:56
  • 1351

(c语言)输入一个整数,将其逆序输出

问题描述: 输入一个整数,将其逆序输出 代码如下: #include int main() { int i; int n=0; int a[10]; printf("please ent...
  • live_wyq
  • live_wyq
  • 2015年04月11日 12:56
  • 10309

Java编程之数组逆序输出

工具:IntelliJ IDEA 15.0.5  代码很简单,上代码 /* 题目:将一个数组逆序输出。 1.程序分析:用第一个与最后一个交换。 */ import java.util.Sc...
  • xx1930812245
  • xx1930812245
  • 2016年09月29日 00:11
  • 1700
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:逆序输出问题
举报原因:
原因补充:

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