天天看点

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;      

继续阅读