单链表的逆置使用递归算法出现-842150451这个值,请求高手予以解决。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表的逆置使用递归算法出现-842150451这个值,请求高手予以解决。。相关的知识,希望对你有一定的参考价值。

/*逆转单链表*/
void Out(LinkList p)

if(p!=NULL)

Out(p->next);
printf("%d\t ",p->data);


那能问下 ,我应该如何具体修改这个吗?我试着修改将Out(p->next-1);
可是 程序运行到这一步的时候,会停住运行

这个递归算法,本身没有问题,应该是你单链表建立的问题
注意下出现-842150451的位置是在第一个还是在最后,就是你链表的尾部还是头结点没有处理好
# include "stdio.h"
# include "malloc.h"
# define NULL 0
# define LEN sizeof(struct data)
typedef struct data

long num;
struct data *next;
*Linklist;
struct data *create()

struct data *head,*p,*p1;
head=NULL;
p1=p=(struct data *)malloc(LEN);
scanf("%ld",&p->num);
while (p->num!=0)

if (head==NULL)
head=p;
else
p1->next=p;
p1=p;
p=(struct data *)malloc(LEN);
scanf("%ld",&p->num);

p1->next=NULL;
return head;

void Out(Linklist p)

if(p!=NULL)

Out(p->next);
printf("%d\t ",p->num);


void main()

Linklist head;
head=create();
Out(head);

结构体中的num改成data
参考技术A 这种值出现一般是变量没复制,或者数组和地址越界造成的。

单链表的逆置

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 typedef struct Node
 5 {
 6     char a;
 7     struct Node *next;
 8 }Node,*list;
 9 
10 void q(list L);
11 void p(list L);
12 int main()
13 {
14     list L;
15     L=(list)malloc(sizeof(Node));
16     L->next=NULL;
17     p(L);
18     q(L);
19     while(L->next!=NULL)
20     {
21         L=L->next;
22         printf("%c",L->a);
23     }
24     printf("\n");
25     return 0;
26 }
27 
28 void p(list L)
29 {
30      list s,r;
31      char c;
32      r=L;
33      c=getchar();
34      while(c!=\n)
35      {
36          s=(list)malloc(sizeof(Node));
37          s->a=c;
38          r->next=s;
39          r=s;
40          c=getchar();
41      }
42      r->next=NULL;
43 }
44 
45 void q(list L)
46 {
47     list s,r;
48     r=L->next;
49     L->next=NULL;
50     while(r!=NULL)
51     {
52         s=r;
53         r=r->next;
54         s->next=L->next;
55         L->next=s;
56     }
57 }

 

以上是关于单链表的逆置使用递归算法出现-842150451这个值,请求高手予以解决。。的主要内容,如果未能解决你的问题,请参考以下文章

单链表逆置

求不带头结点的单链表的逆置算法?

单链表就地逆置的两种方法(递归与普通循环)

2.设计一个算法,将单链表中结点以逆序排列。逆序的单链表中的结点均为原表中的结点

如何用c语言实现单链表的逆置?

C++程序设计 编写程序实现单链表逆置功能。