请问一下,为什么我这个排序函数会出现链表末端的数据丢失?

void Linklist::rank_in_Chinese()
{
    Node *pre, *beh,*pTemp;
    pTemp = new Node;
    pre = pHead;           //外循环指针初定义
    beh = pre;             //内循环指针初定义
    while (pre->pNext != NULL)
    {

        while (beh->pNext != NULL)
        {

            if (beh->Chinese <= beh->pNext->Chinese)
            {
                switch_info(pTemp, beh);
                switch_info(beh, beh->pNext);
                switch_info(beh->pNext, pTemp);
            }   
            beh = beh->pNext;
        }
        pre = pre->pNext;
        beh = pre;
    }
    cout << "排序成功!" << endl;
    system("pause");
}

在进行调试后发现链表末端储存的值总是被替换成NULL指针里面的值,这是为什么阿

每次大循环结束后
pre = pre->pNext;
beh = pre->pNext;