标题:单链表反转输出问题
只看楼主
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
结帖率:94.74%
 问题点数:0 回复次数:3 
单链表反转输出问题
在百度搜了一些,感觉还没领悟透彻,总有些迷迷糊糊。

    百度一般都是如此程序:
void Reversal()
{
    if(head != NULL)
    {
        Node *p = NULL, *n = head->next;
        for(; n != NULL;)
        {
            head->next = p;
            p = head;
            head = n;
            n = n->next;
        }
    }
}

    现在我想要反转之后再输出,如:1,2,3,4,5,6,反转后为:6,5,4,3,2,1;
  
    可是现在的输出卡住了(因为我还没把链表全部领悟透),哪位朋友帮个忙,把程序输出函数写出来,感激不尽。谢谢。
搜索更多相关主题的帖子: 单链 反转 输出 
2008-09-15 23:39
qGemini
Rank: 1
等 级:禁止访问
帖 子:100
专家分:0
注 册:2008-6-28
得分:0 
你要是看得懂反转的代码的话,你还怕不懂写输出吗??

Gemini  C/C++群57751397
本人不对自己的言论负责

http://
2008-09-16 00:21
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
这样的代码是用来反转整个链表的,如果你要使用它,
那么你应该做的不是修改它,而是调用它之后再正常输出整个链表(反转后的)。

如果你不想真的反转整个表,只是想逆向输出一下,那应该这样:
程序代码:
void revout(Node *head)
{
  if(head!=NULL){
    revout(head->next);
    printf("%d\n",head->data);
  }
}


当然了,printf那里需要按照你自己的内容修改。

[[it] 本帖最后由 forever74 于 2008-9-16 00:38 编辑 [/it]]
2008-09-16 00:36
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
得分:0 
闲得无聊打了点儿码……LZ凑合着看…………

程序代码:
#include <stdio.h>

typedef struct Node
{
    int data;
    struct Node* next;
} Node;

/* 反转链表,原理:将原链表表头元素

 * 依次插入一个新链表的头部,从而达成

 * 反转链表的目的。

 */
Node* Reversal(Node* head)
{
    Node *p = NULL;
    while (head != NULL)
    {
        /* 保存head后面的链,因为马上就会被写掉 */
        Node *tmp = head->next;
        /* 下面两行实际上讲head插入链表p的头部中 */
        head->next = p;
        p = head;
        /* 恢复head的值,使head指向下一元素 */
        head = tmp;
    }
    /* 这时,p的内容即为反转后的链表,head应该为NULL */
    return p;
}
/* 反转打印链表 */
void print(Node *p)
{
    if (p->next != NULL)
        print(p->next);
    printf("%d ", p->data);
}

int main()
{
    int i;
    Node n[5];
    for (i = 0; i < 5; i++)
    {
        n[i].data = i + 1;
        n[i].next = n + n[i].data;
    }
    n[4].next = NULL;
    /* 反转链表后反转打印,所以打印的是正向的值 */
    print(Reversal(n));
    return 0;
}


专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-16 08:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-233343-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.109403 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved