尝试完成我的双重链接列表程序,但我真的不知道如何使用类创建节点。我只使用过结构。
DoubleNode.h:
#ifndef DOUBLE_NODE_H_
#define DOUBLE_NODE_H_
template<class ItemType>
class DoubleNode
{
private:
ItemType item;
DoubleNode<ItemType>* prev;
DoubleNode<ItemType>* next;
public:
DoubleNode(const ItemType& anItem, DoubleNode<ItemType>* prevPtr, DoubleNode<ItemType>* nextPtr);
~DoubleNode();
ItemType getItem() const;
DoubleNode<ItemType>* getPrev() const;
DoubleNode<ItemType>* getNext() const;
void setPrev(DoubleNode<ItemType>* prevPtr);
void setNext(DoubleNode<ItemType>* nextPtr);
};
#endif
DoubleNode.cpp:
#include "DoubleNode.h"
template<class ItemType>
DoubleNode<ItemType>::DoubleNode(const ItemType& anItem, DoubleNode<ItemType>* prevPtr, DoubleNode<ItemType>* nextPtr) :
item(anItem), prev(prevPtr), next(nextPtr)
{
}
template<class ItemType>
DoubleNode<ItemType>::~DoubleNode()
{
this->prev = this->next = nullptr;
}
template<class ItemType>
ItemType DoubleNode<ItemType>::getItem() const
{
return this->item;
}
template<class ItemType>
DoubleNode<ItemType>* DoubleNode<ItemType>::getPrev() const
{
return this->prev;
}
template<class ItemType>
DoubleNode<ItemType>* DoubleNode<ItemType>::getNext() const
{
return this->next;
}
template<class ItemType>
void DoubleNode<ItemType>::setPrev(DoubleNode<ItemType>* prevPtr)
{
this->prev = prevPtr;
}
template<class ItemType>
void DoubleNode<ItemType>::setNext(DoubleNode<ItemType>* nextPtr)
{
this->next = nextPtr;
}
这两个文件是由我的教授提供的,我需要实现另一个名为DoubleListInterface.h的类。我现在正在努力,但我真的不知道我是否创造了正确的节点。
到目前为止我的DoubleList.cpp insertFront实现:
template<class ItemType>
bool DoubleList<ItemType>::insertFront(const ItemType& newEntry)
{
DoubleNode<ItemType>* n; // Creating pointer to node
DoubleNode<ItemType>* head;
DoubleNode<ItemType>* tail;
// If list is empty, this is the first node
if (itemCount == 0){
n = new DoubleNode<ItemType>; // Creating node
n->this->item(newEntry); // Putting item in node
n->prev = NULL; // First node, so prev is null
head = n; // Both head and tail would be at this node
tail = n;
itemCount++; // Increment itemCount
}
else{
DoubleNode<ItemType>* temp = new node; // Creating a filling new node
temp->this->item(newEntry);
temp->this->setPrev(head->this->getPrev()); // Set prev to the prev of head pointer
temp->this->getNext() = this->head; // Make next point to the head
head->this->getPrev() = temp; // Point prev of the old head node to the newly created node
head = temp; // Temp is the new head
delete temp; // Delete temp pointer
temp = NULL;
itemCount++; // Increment intemCount
}
return true;
}
我在运行此操作时遇到很多错误,其中大部分都是&#34;预期不合格的ID在此之前&#39;&#39;&#34;在我使用this
指针的每个地方。不知道这意味着什么,但我真的想知道我是否正确创建节点。感谢您提供的任何帮助。
答案 0 :(得分:0)
您无法指向此。
例如,你写了
temp->this->item(newEntry);
正确的方法是
temp->item(newEntry);