1

私の追加機能には明らかに問題があります。最初に逆参照していて、そのために最初に何も指していないからです。nullポインターにならないように修正する方法がわかりません。

    struct Node
    {
        int data;
        Node *next;
    };

    class LinkedList
    {
        Node *first;
        Node *last;
        int count;
        public:

        LinkedList()
        {
            first = NULL;
            last = NULL;
            count = 0;
        }


        void Add(int item)
        {
            if (first == NULL)
            {
                first->data = item;
                last->data = item;
                last->next = NULL;
                first->next = last;
                count = 1;
            }
            else
            {
                Node *newNode = new Node;
                newNode->data = last->data;
                newNode->next = last;
                last->data = item;
                last->next = NULL;
                count ++;
            }
        }
4

3 に答える 3

3
if (first == NULL)
{
    /* if first is NULL dereference it. Hooray! */
    first->data = item;
    ...
于 2013-04-09T02:53:55.650 に答える
0

リンクされたリストを見てください

最初に作成する必要があるときに開始し、first == NULLそれをリンクされたリストに挿入して接続するための詳細はほとんどありません。いくつかのアルゴリズムについては、リンクされた記事を参照してください。

最も単純なのは、first *それ自体を指すヘッダー ノード (の代わりに) を持つ単一の連結リストだと思いますが、連結リストを実装するには多くの方法があり、要素を接続する方法を選択する方法によって異なります。

それはあなたが何を求めているかによって異なりますが、何かが機能する必要があるだけの場合は、データと次のポインターを使用して独自の構造体を定義するだけで、次にアクセスする方法を伝え、提供されたアルゴリズムを使用して実行するブースト侵入循環 slist アルゴリズムから選択できます。すべての作業 (ノードのリンクとリンク解除)。

于 2013-04-09T03:25:56.193 に答える