创建一个静态链表并输出,在创建链表的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);
}