Celia_D 2019-10-13 13:43 采纳率: 50%
浏览 1201
已采纳

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 宇视监控服务器无法登录
  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥15 DruidDataSource一直closing
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据