开发者社区> 问答> 正文

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

/*逆转单链表*/void Out(LinkList p){ if(p!=NULL) { Out(p->next); printf("%d\t ",p->data); }}

展开
收起
知与谁同 2018-07-15 18:49:34 2526 0
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

    -------------------------

    这种值出现一般是变量没复制,或者数组和地址越界造成的。

    2019-07-17 22:55:12
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
图解算法小抄 立即下载
面试常考算法 立即下载
数据+算法定义新世界 立即下载