所以我剛開始學習C++的LinkedLists。我知道C +有一個庫,但我試圖專注於LinkedLists。我看到的一個練習要求您設計一個帶有2個成員函數和默認構造函數的鏈接列表類:add,isMember和LinkedList()構造函數。添加功能將新節點添加到列表的前面。 isMember測試以查看列表是否包含傳入的要添加的值的節點。我的問題是,我在結構中創建ListNode *頭,然後我嘗試在LinkedList構造函數中訪問它以將其設置爲null,它向我拋出「未聲明的標識符」的錯誤。即使我在結構中將它設置爲NULL,它也會給我提供相同的錯誤。如果我在構造函數中編寫「ListNode * head = NULL」,錯誤就會消失,但是隨着使用「未聲明的標識符」頭部,我的add方法仍然瘋狂。 這是我走到這一步:在類中訪問struct成員,LinkedList節點
LinkedList.h:
class LinkedList
{
protected:
struct ListNode
{
double value;
ListNode *next;
ListNode(double value1, ListNode *next1 = NULL)
{
value = value1;
next = next1;
}
ListNode *head;
};
// Public Interface
public:
// Class Constructor(s)
LinkedList();
// Methods
void add(double x);
bool isMember(double x);
// Private Class Members
private:
};
LinkedList.cpp:
#include "stdafx.h"
#include "LinkedList.h" // Class Definition file
// Class Default Constructor
LinkedList::LinkedList()
{
head = NULL;
}
// Class Destructor
LinkedList::~LinkedList(void)
{
ListNode *nodePtr;
while (nodePtr != NULL)
{
ListNode *garbage = nodePtr;
nodePtr = nodePtr->next;
delete garbage;
}
}
void LinkedList::add(double x)
{
ListNode *nodePtr, *prevNodePtr;
if (head == NULL || head->value >= x)
{
head = new ListNode(x, head);
}
else
{
nodePtr = head->next;
while (nodePtr != NULL && nodePtr->value < x)
{
prevNodePtr = nodePtr;
nodePtr = nodePtr->next;
}
prevNodePtr->next = new ListNode(x, nodePtr);
}
}
bool LinkedList::isMember(double x)
{
//tbd
}
任何線索,爲什麼這是將是一個巨大的幫助。謝謝!
'head'是'ListNode'成員,而不是'LinkedList'。 'ListNode'有一個'head'真的沒有意義。 – ghostofstandardspast