单链表 如何 逆序 输出
如题,我百度了一下,百度上有说 将链表调转后 输出,但是不会,还有一种用 栈 输出,采用递归。我采用了后面一种,但是输出 答案完全错误。
# 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;
}
这代码主要是 递归那 部分错了,但是不会改,数字输出完全乱了。 # 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;
} ryxcaixia 发表于 2015-12-26 08:47
# include
# include
struct node
O(∩_∩)O谢谢,又粗心了。我还检查了好几遍都没有发现错误:cry
页:
[1]