振东Bob 2021-07-21 14:12 采纳率: 0%
浏览 42

在创建链表的方法里输出正常,但是调用Print方法输出链表异常。 请问哪里写错了呢?


创建一个静态链表并输出,在创建链表的CreateLianBiao方法里输出正常,但是出了该方法后,调用Print方法输出链表异常。 请问高人,我哪里写错了呢?

三个文件: main.c, c2.h, c2.c 完整代码如下:

一.文件:main.c

#include <stdio.h>
#include "stdlib.h"
#include "string.h"
#include "c2.h"

int main()
{
   struct LinkList *head1;

   //创建静态链表正常
   head1 = CreateLianBiao();
   //打印异常
   Print(head1);

   return 0;
}

二.文件:c2.h

#include <stdio.h>
#include "stdlib.h"
#include "string.h"

struct LinkList * CreateLianBiao(void);
void Print(struct LinkList * head);

三.文件:c2.c

#include <stdio.h>
#include "stdlib.h"
#include "string.h"
#include "c2.h"

struct LinkList * CreateLianBiao(void)
{
    int i=0;
    struct LinkList list0,list1,list2,list3,list4,list5, *head, *p;

    list0.data = 0;
    list0.next = &list1;

    list1.data = 1;
    list1.next = &list2;

    list2.data = 2;
    list2.next = &list3;

    list3.data = 3;
    list3.next = &list4;

    list4.data = 4;
    list4.next = &list5;

    list5.data = 5;
                list5.next = NULL;

    head = &list0;

                //在这里打印正常
    p=head;
    do
                {
       printf("%d ",p->data);    
        i=i+1;
        p = p->next;
                }
               while (p!=NULL);

    return head;
}

void Print(struct LinkList * head)
{
    int i=0;
    struct LinkList *p;
    p = head;
    if (head!=NULL)
    {
        do
        {
             printf("%d ",p->data);
             i=i+1;
             p=p->next;
        }
        while (p!=NULL);
    }
    printf("\n\nlength is %d \n\n",i);    
}

  • 写回答

4条回答 默认 最新

  • CSDN专家-Time 2021-07-21 14:23
    关注

    点断点看哪里空指针。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月21日

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!