C语言:单链表输出显示问题

各位大佬麻烦帮忙看一下,从txt文件中获取数据为链表后,想要输出显示,运行结果是-842150451 1 3 5 7 9(1 3 5 7 9为正确链表数据)
代码如下:

// 实验2.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

typedef struct LinkList
{
    int data;
    struct LinkList *next;
}LinkList;

LinkList *createlink()
{
    LinkList *head=(LinkList*)malloc(sizeof(LinkList));
    int t;
    LinkList *p;
    LinkList *q;
    p=q=head;
    FILE *r=fopen("list1.txt","r");
    if(r==NULL)
    {
        printf("could not open file");
        return NULL;
    }
    while(fscanf(r,"%d",&t)!=EOF)
    {
        q=(LinkList*)malloc(sizeof(LinkList));
        q->data=t;
        p->next=q;
        p=q;
    }
    p->next=NULL;
    return head;
}

int _tmain(int argc, _TCHAR* argv[])
{
    LinkList *p;
    p=createlink();
    while(p)
    {
    printf("%d ",p->data);
    p=p->next;
    }
    //system("pause");
    return 0;
}


1个回答

while(fscanf(r,"%d",&t)!=EOF)
{
q=(LinkList*)malloc(sizeof(LinkList));
q->data=t;
p->next=q;
p=q;
}
这里,你从文件读入的数据,都是新建一个节点,然后放在data域里面的,而作为表头的那个节点,没有用到,所以是随机值

所以你程序没毛病,只是输出的时候,
while(p)
前面加上
p = p->next;
即可

fangdongheiha
Lafayette* 啊!明白了,谢谢谢谢
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问