显示链表
Display a linked list
我是 C++ 的新手,我正在制作一个链表。在尝试显示链接列表的内容时,我一直 运行 遇到问题。它要么显示随机数,从中删除项目,要么完全崩溃。我不确定如何解决它,或者问题是否来自程序的其他地方,但我不确定是从哪里来的,因为程序的其余部分运行良好。
class CarNode {
public:
CarNode() : m_pNext(0), m_ticketNum(0) { }
~CarNode();
CarNode(CarNode &): m_pNext(0), m_ticketNum(0) { }
void SetNext(CarNode* p){m_pNext=p;}
void SetTicketNum(int tN){m_ticketNum=tN;}
CarNode *GetNext(void){return(m_pNext);}
int GetTicketNum(void){return(m_ticketNum);}
private:
int m_ticketNum;
CarNode *m_pNext;
};
class CAlley {
public:
CAlley () : m_pTop(0), mSize(0), mMaxSize(MAXSIZE) { }
~CAlley () {}
CAlley (CAlley &):m_pTop(0), mSize(0), mMaxSize(MAXSIZE) { }
int Park(int);
void Retrieve(int,CAlley *);
void Terminate();
void Display();
private:
void SetTop(CarNode *p){m_pTop=p;}
bool Empty(){return ((mSize==0) ? true : false);}
bool Full() {return ((mSize==MAXSIZE) ? true : false);}
int Push(CarNode *);
CarNode * Pop();
CarNode *m_pTop;
int mSize;
int mMaxSize;
};
void CAlley::Display()
{
cout << "Alley A:\t";
CarNode * pCurr = m_pTop;
while (pCurr != NULL)
{
cout << pCurr->GetTicketNum();
if(pCurr->GetNext()!=NULL)
cout<< '\t';
pCurr=pCurr->GetNext();
}
cout << '\n';
}
我可能 运行 对您的设置不同,但是将您的指针设置为 (0) 实际上是否将它们设置为 NULL?如果不是,您可能想明确地这样做。
我认为我们可能需要您的 push/pop 才能正确测试。
顺便说一句,我把它写得很好,可以在 codepad.org - http://codepad.org/C15VzSKT 上进行测试
`
我是 C++ 的新手,我正在制作一个链表。在尝试显示链接列表的内容时,我一直 运行 遇到问题。它要么显示随机数,从中删除项目,要么完全崩溃。我不确定如何解决它,或者问题是否来自程序的其他地方,但我不确定是从哪里来的,因为程序的其余部分运行良好。
class CarNode {
public:
CarNode() : m_pNext(0), m_ticketNum(0) { }
~CarNode();
CarNode(CarNode &): m_pNext(0), m_ticketNum(0) { }
void SetNext(CarNode* p){m_pNext=p;}
void SetTicketNum(int tN){m_ticketNum=tN;}
CarNode *GetNext(void){return(m_pNext);}
int GetTicketNum(void){return(m_ticketNum);}
private:
int m_ticketNum;
CarNode *m_pNext;
};
class CAlley {
public:
CAlley () : m_pTop(0), mSize(0), mMaxSize(MAXSIZE) { }
~CAlley () {}
CAlley (CAlley &):m_pTop(0), mSize(0), mMaxSize(MAXSIZE) { }
int Park(int);
void Retrieve(int,CAlley *);
void Terminate();
void Display();
private:
void SetTop(CarNode *p){m_pTop=p;}
bool Empty(){return ((mSize==0) ? true : false);}
bool Full() {return ((mSize==MAXSIZE) ? true : false);}
int Push(CarNode *);
CarNode * Pop();
CarNode *m_pTop;
int mSize;
int mMaxSize;
};
void CAlley::Display()
{
cout << "Alley A:\t";
CarNode * pCurr = m_pTop;
while (pCurr != NULL)
{
cout << pCurr->GetTicketNum();
if(pCurr->GetNext()!=NULL)
cout<< '\t';
pCurr=pCurr->GetNext();
}
cout << '\n';
}
我可能 运行 对您的设置不同,但是将您的指针设置为 (0) 实际上是否将它们设置为 NULL?如果不是,您可能想明确地这样做。
我认为我们可能需要您的 push/pop 才能正确测试。
顺便说一句,我把它写得很好,可以在 codepad.org - http://codepad.org/C15VzSKT 上进行测试 `