显示链表

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 上进行测试 `