用txt文件填充循环双重链接列表

时间:2018-10-17 02:33:43

标签: c algorithm data-structures

我得到了一个名为circle.txt的txt文件。该txt文件由名称和衬衫编号组成,例如

Cameron 1
David 2
Dorothy 3
Heather 4

等...到100

所以我必须根据游戏的数量做一个项目,并且该项目的一部分需要一个来创建循环双重链接列表 为指定数量的玩家使用void createGame(char* gameFile, int numOfPlayers);函数,以便每个链接代表一个玩家。然后,我必须根据从文件中读取的值设置球员的姓名和球衣号码。因此,具有所有功能的头文件看起来像

countOust.h

#ifndef CountOust_h
#define CountOust_h

struct listNode
{
    int hName; //represents numbers in file
    char data[15]; // represents name in file
    struct listNode *next;
    struct listNode *prev;

};
typedef struct listNode sNode;

void createGame(char *gameFile, int numOfPlayers);
//void traverseFwd(sNode *list);
//void insertAt(sNode *list, sNode *player);
//void lRemove(sNode *player);
//void traverseBwd(sNode *list);
//void startGame();

#endif

某些功能被注释掉了,因为主要重点是createGame功能。

因此,我尝试使用countOust.cfopen的for循环填充fscanf列表中的链接。我尝试过类似的

countOust.c

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <stdbool.h>
#include "CountOust.h"

void createGame(char *gameFile, int numOfPlayers)
{
    FILE* f;
    f = fopen(gameFile, "r");

   // head = (struct sNode *)malloc(sizeof(sNode);

    fscanf(f, "%s %d", head->data, &head->hName);

    for (int i = 0; i < numOfPlayers - 1; i++)
    {


    }


    fscanf(f, "%s %d", tail->data, &tail->hName);


}

^这给出了一个错误,因为它具有集思广益的代码

我需要一个fscanf,它将包含一个字符串和一个整数,分别表示文件中的名称和文件中的数字。

我需要设置 为节点分配malloc空间,并且该节点应具有对下一个节点的名称编号引用和对上一个节点的引用。然后,我需要设置名称和编号,然后为上一个和下一个节点设置指针。

那么我将如何创建循环双链表并使用fscanf,malloc填充标题文件名和球衣号码的txt文件,从头文件结构中引用节点,从而从txt文件创建循环双链表?

1 个答案:

答案 0 :(得分:1)

假设gamefile包含circle.txt文件的名称,那么您的fscanf()调用将仅读取当前写入的数字。您还需要添加一些内容来读取名称。

fscanf(f, "%s %d", args...)将是一个很好的起点。