-1

次の図をご覧ください

ここに画像の説明を入力してください

これが私がそれを実装した方法です

template <typename T>

class LinkedList
{

    struct Link {
    T data;
    struct Link *next;

    public:
    T *first;
  };



LinkedList::LinkedList(void)
{
    first = 0;
}


LinkedList::~LinkedList(void)
{
}

bool LinkedList::IsEmpty()
{
    return (first==0);
}

void LinkedList::Insert(Link *newLink)
{
    newLink->next = first;
    first = newLink;
}

void LinkedList::Display()
{
    Link *current = first;

    while(current!=0)
    {
        current->Display();
        current = current->next;
    }
}

T *LinkedList::Find(int value)
{
    Link *current = first;

    while(current->GetData()!=value)
    {
        if(current->next==0)
        {
            return 0;
        }
        else
        {
            current = current->next;
        }
    }

    return current;
}

T *LinkedList::Delete(const int id)
{
    Link *current = first;
    Link *previous = first;

    while(current->GetData()!=id)
    {
        if(current->next==0)
        {
            return 0;
        }
        else
        {
            previous = current;
            current = current->next;
        }
    }

    if(current==first)
    {
        first = first->next;
    }
    else
    {
        previous->next = current->next;
    }

    return current;
}
};

私は自分の実装に不安を感じています。特に、 typeinsert()を使用して、メソッド内で何をすべきかわかりません。T

次は別のクラスの図です。そのnextポインタは、武器がリンクリスト内のリンクを表すことです。これも「リンク」クラスなのか疑問でした。Nextは、リスト内の次の武器へのポインターです。上記のコードに影響する場合は、ここに投稿しました。

ここに画像の説明を入力してください

insert()メソッド内でどのように対処しますか?それとは別に、私のリンクリストは正しいですか?とにかくリンクリストのテンプレートで初めて。助けてください!

注:組み込みのデータ構造は許可されていません。それが、クラス図を投稿した理由です。データ構造サポートを構築する必要がある場合は、自分でコードを構築する方法を尋ねていません。

4

1 に答える 1

0

私がむしろ答えたい質問:

私の特定の問題/運動は....

std::listまたは他の標準ライブラリ コンテナーを使用して問題を解決するにはどうすればよいですか?

私が答えないように努力している暗黙の質問:

コードの何が問題になっていますか?

あなたが実際に尋ねていると思う質問:

insert()メソッドを修正するにはどうすればよいですか?

最後の質問のみに答える:

リストの先頭に新しいリンクを追加しようとしているようです。概念的には、リストの最後に追加しますが、それぞれ独自に追加します。

first問題は型にあります: クラス内では、あなたの型は でT *あり、Tを実装するカスタム クラスである可能性がありますGetData()firstを指しているのでT、おそらく を指しているLinkを指しているはずTです。

次に、あなたのinsert()方法はもう少し理にかなっています。

それでも、予測出力が定義された、準拠可能なコードがなければ、コードが正しいかどうかを知ることは非常に困難です。少なくとも標準ライブラリを使用すると、問題が発生した場合、リンク リストの実装には問題がないと常に想定できます。

宿題だから自分でやらなきゃいけないの?

于 2013-02-27T12:51:05.230 に答える