独一无② 发表于 2015-12-25 18:25:22

单链表 如何 逆序 输出

如题,我百度了一下,百度上有说 将链表调转后 输出,但是不会,还有一种用 栈 输出,采用递归。
我采用了后面一种,但是输出 答案完全错误。

# include <stdio.h>
# include <stdlib.h>
struct node
{
        int data;
        struct node *next;
};
void digui(struct node* head)
{
        if(head == NULL)
          return;
    if(head->next != NULL)
       digui(head->next);
    printf("%d ",head->next);
}
int main()
{
        struct node *head,*p,*q,*t;
        int i,n,m,a,b;
        scanf("%d",&n);
        head=NULL;
        for(i=1;i<=n;i++)
        {
                scanf("%d",&a);
                p=(struct node*)malloc(sizeof(struct node));
                p->data=a;
                p->next=NULL;
                if(head==NULL)
                   head=p;
      else
         q->next=p;
      q=p;
        }
        digui(head);//递归逆序
/*        t=head;
        while(t != NULL)
       {
                printf("%d",t->data);
                t=t->next;
        }   */
//这部分是正序输出,运行可以正常输出
        return 0;
}


这代码主要是 递归那 部分错了,但是不会改,数字输出完全乱了。

ryxcaixia 发表于 2015-12-25 18:25:23

# include <stdio.h>
# include <stdlib.h>
struct node
{
      int data;
      struct node *next;
};
void digui(struct node* head)
{
      if(head == NULL)
          return;
    if(head->next != NULL)
       digui(head->next);
    printf("%d ",head->data);
}
int main()
{
      struct node *head,*p,*q,*t;
      int i,n,m,a,b;
      scanf("%d",&n);
      head=NULL;
      for(i=1;i<=n;i++)
      {
                scanf("%d",&a);
                p=(struct node*)malloc(sizeof(struct node));
                p->data=a;
                p->next=NULL;
                if(head==NULL)
                   head=p;
      else
         q->next=p;
      q=p;
      }
      digui(head);//递归逆序
/*      t=head;
      while(t != NULL)
         {
                printf("%d",t->data);
                t=t->next;
      }   */
//这部分是正序输出,运行可以正常输出
      return 0;
}

独一无② 发表于 2015-12-26 11:32:58

ryxcaixia 发表于 2015-12-26 08:47
# include
# include
struct node


O(∩_∩)O谢谢,又粗心了。我还检查了好几遍都没有发现错误:cry
页: [1]
查看完整版本: 单链表 如何 逆序 输出