0

私はプロジェクトをコーディングしています—学生の情報のためのMIS。

chaintableをSort()使ってデータを整理しています。データをstuID(学生ID)でソートする関数を書いています。しかし、ポイントCNode *pは割り当てられていません0x00000000

さて、以下の私のコードの一部を見てください。

class CNode
{
    friend class CChainTable;
public:
    CStudent GetData()
    {   return data;    }
    CNode* GetNext()
    {   return next;    }
private:
    CStudent data;
    CNode *next;
};


class CChainTable
{
private:
    CNode *pHead;
    CNode *pCur;
public:
    CChainTable(): pHead(NULL),pCur(NULL)
    {}
    ~CChainTable()
    {
        CNode *p=pHead;
        while(pHead)
        {
            pHead=p->next;
            delete p;
            p=pHead;
        }
    }
    void SetCurToHead()
    {   pCur=pHead; }

    void Sort()
    {
        SetCurToHead();
        if(pHead == NULL){
            cout<<"No data in the system."<<endl;
        }else{
            char stuID_min[10];
            CNode *pCurFront,*pFront;
            pCurFront=pHead;
            CNode *p=pHead;
            for(pCur=pHead;pCur!=NULL;pCurFront=pCur,pCur=pCur->next)
            {
                strcpy( stuID_min,pCur->data.GetStuID() );
                for(pFront=pCur,p=pFront;pCur!=NULL;pFront=p,p=p->next)
                {
                    if( strcmp(stuID_min,p->data.GetStuID() )>0 ) {
                        strcpy( stuID_min,p->data.GetStuID() );
                    }
                }
                pCurFront->next=pCur->next;
                pFront->next=p->next;
                p->next=pCurFront->next;
                pCurFront->next=p;
                pCur->next=pFront->next;
                pFront->next=pCur;
            }
            cout<<"Result:"<<endl;
            ShowAll();  //Print all the data.
        }
    }
};       /* Structure composing a table tree. */

次に、デバッグで情報を確認します。

p 0x00000000

p->data {...}

pCur 0x00384128

pFront 0x00384230

stuID_min 0x0012fc74

this 0x0012fed8

pCurFront 0x00384128

ポイントの上手な使い方はCNode *p

4

0 に答える 0