BAEKHYUN.pcy 2018-12-31 00:27 采纳率: 0%
浏览 546

用fscanf和fgets从文件读取数据存储到链表失败是为什么??

我建立了链表结构,然后从文件导入数据,然后输出链表内容,发现输出的内容顺序不对内容也有点地方出错了!
(下面是代码)
#include
#include
#include
#include
#include
typedef struct node{
char question[200];
char option_A[50];
char option_B[50];
char option_C[50];
char option_D[50];
char answer[3];
char respond[3];
char analysis[200];
int length;
struct node *next;
}LNODE,*LinkList;

int main(void)
{
LNODE *L;
L=new LNODE;
L->next=NULL;
L->length=0;

LNODE *p;
LNODE *q;
q=L;
int i;
FILE *tk;

if((tk=fopen("//Users//apple//Documents//Test System//test question.txt","r"))==NULL)
{
    printf("File open error!\n");
    exit(0);
}
while(!feof(tk))
{
    fgets(q->question,sizeof(LNODE),tk);
    fgets(q->option_A,sizeof(LNODE),tk);
    fgets(q->option_B,sizeof(LNODE),tk);
    fgets(q->option_C,sizeof(LNODE),tk);
    fgets(q->option_D,sizeof(LNODE),tk);
    fgets(q->answer,sizeof(LNODE),tk);
    fgets(q->analysis,sizeof(LNODE),tk);
    p=new LNODE;
    p->next=NULL;
    q->next=p;
    q=q->next;
}
if(fclose(tk))
{
    printf("Can not close the file!\n");
    exit(0);
}
q=L;
while(q->next)
{
    printf("%s",q->question);
    printf("%s",q->option_A);
    printf("%s",q->option_B);
    printf("%s",q->option_C);
    printf("%s",q->option_D);
    printf("%s",q->answer);
    printf("%s",q->analysis);
    q=q->next;
}

}
(这是文档里的内容)
在数据结构中,从逻辑结构上可以把数据结构分成()
A.动态结构和静态结构
B.紧凑结构和非紧凑结构
C.线性结构和非线性结构
D.内部结构和外部结构
C

与数据元素本身的形式,内容,相对位置,个数无关的是数据的()
A.存储结构
B.存储实现
C.逻辑结构
D.运算实现
C

通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()
A.数据具有同一特点
B.每个数据元素都一样
C.不仅每个数据元素所包含的数据项都一样,而且对应数据项的类型要一致
D.数据元素所包含的数据项的个数要相等
C
只有这样系统才能高效统一的对数据进行管理。
算法的时间复杂度取决于()
A.问题的规模
B.待处理的数据的初态
C.计算机的配置
D.A和B
D

顺序表中第一个元素的储存地址是100,每个元素的长度为2,则第5个元素的地址是()
A.100
B.108
C.100
D.120
B
100+(5-1)*2==108
线性表若采用链式存储结构,要求内存中可用存储单元的地址()
A.部分是连续的
B.一定是不连续的
C.必须是连续的
D.连续或不连续都可以
D
因为链表有指针跟踪从而连不连续都可以。
用链接方式存储的队列,在进行删除运算时()
A.仅修改头指针
B.仅修改尾指针
C.头尾指针都一定要修改
D.头尾指针可能都要修改
D
一般只修改头指针,但是删除的结点若为最后一个时,则要重新对尾指针赋值。
一个递归算法必须包括()
A.递归部分
B.终止条件和递归部分
C.迭代部分
D.终止条件和迭代部分
D

串是一种特殊的线性表,其特殊性体现在()
A.可以顺序储存
B.可以链式储存
C.数据元素是单个字符
D.数据元素可以是多个字符
C
串是一种内容受限的线性表。
把一棵树转化为二叉树后,这棵二叉树的形态是()
A.唯一的
B.有多种
C.有多种,但根结点都没有左孩子
D.有多种,但根结点都没有右孩子
A
略。
利用二叉链表存储树,则根结点的右指针()
A.指向最左孩子
B.指向最右孩子
C.非空
D.为空
C
右指针指向兄弟结点。
在以下的存储形式中,不是树的存储形式的是()
A.双亲表示法
B.孩子链表表示法
C.孩子兄弟表示法
D.顺序存储表示法
D
常用孩子兄弟表示法转化为二叉树进行储存。
在一个无向图,所有顶点的度数之和等于图的边数的()倍
A.1/2
B.1
C.2
D.4
A

折半查找与二叉排序树的时间性能()
A.相同
B.完全不同
C.有时不相同
D.数量级都是O(log2n)
C
要看初始数据的状态。
堆的形状是一棵()
A.二叉排序树
B.满二叉树
C.完全二叉树
D.平衡二叉树
C

若一组记录的排序码为(46,79,56,38,40,84),则利用堆排序的方式建立的初始堆为()
A.79,46,56,38,40,84
B.84,79,56,38,40,46
C.84,79,56,46,40,38
D.84,56,79,40,46,38
C
画出图去找矛盾。
快速排序在下列()最易发挥作用
A.被排序的数据中具有多个相同的排序码
B.被排序的数据已经基本有序
C.被排序的数据完全无序
D.被排序的数据中的最大值和最小值相差悬殊
C
完全无序时用快速排序。
(这是输出后的内容,第一行与原文档的根本不同,而且后面也有很多乱的错误的)
图片说明

有哪位大神指导一下小白!!

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 17:52
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料