Celia_D
2019-10-13 13:43
采纳率: 41.2%
浏览 1.0k

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条回答 默认 最新

  • threenewbee 2019-10-13 15:20
    已采纳

    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;
    即可

    已采纳该答案
    打赏 评论

相关推荐 更多相似问题