天天看點

C++雙向資料連結清單BUG

編寫雙向資料連結清單時,從尾部插入資料時,提示錯誤,望各位同仁執教:

資料結構體:

typedef struct node{

int nVal;
struct node *pStc_prev;
struct node *pStc_next;      

}stcNode;

typedef struct{

stcNode stcHead;
stcNode stcTail;      

}stcLnk;

int nNum = 0,nSize = 0;

stcLnk sLik = {0};

vLnkNode_init(&sLik);

nLnkNode_addHead(&sLik,50);
nLnkNode_addHead(&sLik,10);
nLnkNode_addTail(&sLik,70); **  /*現在的問題就是,每當執行到此語句時,便會出現錯誤*/   問題在下面**      
stcNode *pStc_node = new stcNode, *pStc_first = NULL, *pStc_mid = NULL, *pStc_last = NULL,*pStc_tmp = NULL;

if(!pStc_node)

    return 0;

pStc_node->nVal = nVal;
pStc_node->pStc_next = NULL;
pStc_node->pStc_prev = NULL;

for(pStc_tmp = &pStc_link->stcHead;pStc_tmp != &pStc_link->stcTail;pStc_tmp = pStc_tmp->pStc_next){

    pStc_first = pStc_tmp;
    pStc_mid = pStc_first->pStc_next;
    pStc_last = pStc_mid->pStc_next;    **  /*執行語句到此,提示Access violation reading location 0x00000008*/,一直沒有查出具體原因,望同仁執教**

    if(pStc_mid == &pStc_link->stcTail){
        
        pStc_first->pStc_next = pStc_node;
        pStc_node->pStc_next = pStc_mid;

        pStc_mid->pStc_prev = pStc_node;
        pStc_node->pStc_prev = pStc_first;

        break;
    }
}

delete pStc_node;

return 1;      

繼續閱讀