連結串列面試題(一)---刪除一個無頭單連結串列的非尾結點

gogogo_sky發表於2017-05-16

一、結點的定義

typedef int DataType;

typedef struct ListNode//定義結點
{
    DataType data;
    struct ListNode* next;
}ListNode,*PListNode;

typedef struct  PList//定義一個成員是指向結點的指標的結構體
{
    PListNode PHead;
}PList,*PList;

二、函式實現
1.刪除一個無頭單連結串列的非尾結點,只知道這個結點的位置
//思路:將該節點下一個結點的值賦給這個結點,然後把下一個結點刪除;

//1.刪除連結串列非尾結點
void EraseNotTail(PListNode pos)
{
    PListNode del=NULL;
    assert(pos->next!=NULL);//判斷
    del=pos->next;//記錄下一個結點
    pos->data=del->data;//將下一個結點的值賦給pos
    pos->next=del->next;
    free(del);
}

相關文章