单链表的逆置使用递归算法出现-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这个值,请求高手予以解决。。的主要内容,如果未能解决你的问题,请参考以下文章