2

基本的に、各文字が独自のノードを持つリンクされたリストに単語を保存する必要があります。ネストされた構造で本当に混乱します。次のノードに移動するにはどうすればよいですか? 私はこれを完全に間違っていることを知っているので、私は尋ねています。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct node
{
    char letter;
}NODE;


typedef struct handle
{
    NODE **arr;
}HANDLE;

HANDLE * create();


void insert(handle **, char, int);

int main(int argc, char **argv)
{
    FILE *myFile;
    HANDLE *table = (HANDLE *)malloc(sizeof(HANDLE));
    NODE *linked = (NODE *)malloc(sizeof(NODE));
    int counter = 0;

    linked = NULL;
    table->arr[0] = linked;

    char c;


    myFile = fopen(argv[argc], "r");

    while((c = fgetc(myFile)) != EOF)
    { 
        if(c != '\n')
            insert(&table, c, counter);

        else
        {
            counter++;
            continue;
        }
    }
}


void insert(HANDLE **table, char c, int x)
{
    (*table)->arr[x]->letter = c; //confused on what to do after this or if this
                                  //is even correct...
} 
4

2 に答える 2

4

リンク リストの場合、通常、ノード構造自体に次のノードへのリンクがあります。

typedef struct node
{
    char letter;
    struct node *next;
}NODE;

次に、任意のノードNODE *nから、次のノードはn->next(NULL でない場合) です。

insertNULL である が見つかるまでリストをスキャンn->nextし、最後に新しいノードを割り当てる必要があります (必ずnextNULL に設定してください)。

テーブル インデックスを指定して新しいリストを初期化する関数と、新しいノードを初期化する別の関数が必要な場合があります。

于 2013-04-30T15:37:48.087 に答える