-1

リンクリスト内のノードに対して次のクラスを定義しました。

template <class T>
struct ListItem
{
    T value;
    List<T> wordList; // <--------
    ListItem<T> *next;
    ListItem<T> *prev;

    ListItem(T theVal)
    {
       this->value = theVal;
       this->next = NULL;
       this->prev = NULL;
    }
};

上記のクラスには、別のクラス、つまりListが含まれています。このクラスには独自の関数があり、そのうちの1つはinsertAtEndです。ListItemを作成しましたが、insertAtEndを呼び出してそのwordListコンポーネントの値を変更したいと思います。それを行うための構文は何ですか?

リストクラスは次のとおりです。

template <class T>
class List
{
    ListItem<T> *head;

public:

    // Constructor
    List();         //done

    //test function
    void displaylist();

    // Copy Constructor
    List(const List<T>& otherList);       //done

    // Destructor
    ~List();

    // Insertion Functions
    void insertAtHead(T item);        //done
    void insertAtTail(T item);        //done
    void insertAfter(T toInsert, T afterWhat);    //done
    void insertSorted(T item);                    //done

    // Lookup Functions
    ListItem<T> *getHead();                       //done
    ListItem<T> *getTail();                       //done
    ListItem<T> *searchFor(T item);               //done

    // Deletion Functions
    void deleteElement(T item);                   //done
    void deleteHead();
    void deleteTail();                            //done

    // Utility Functions
    int length();                                 //done
 };

insertAtTail関数の実装は次のとおりです。

template <class T>
void List<T>::insertAtTail(T item)
{
    ListItem<T>* a = new ListItem<T>(item);

    if(head==NULL)
    {
        head=a;
    }

    else
    {
        ListItem<T>* temp;
        temp=head;

        while(temp->next!=NULL)
        {
            temp=temp->next;
        }
        temp->next=a;
        a->prev=temp;
    }
}
4

2 に答える 2

2

何かのようなもの

wordList.insertAtEnd( .... arguments ....);
于 2013-02-15T14:11:05.760 に答える
1
  1. あなたの正確なユースケースはわかりませListItemが、List
  2. wordList単純に do this->wordList.insertAtEnd(........)(thisはここでは必須ではありません)を使用します。
于 2013-02-15T14:12:39.763 に答える