實現一個算法,刪除單鏈表中間的某個結點,假定你只能訪問該結點

實現一個算法,刪除單向鏈表中間的某個結點,假定你只能訪問該結點。
給定待刪除的節點,請執行刪除操作,若該節點爲尾節點,返回false,否則返回true

直接free(p),這樣行不通,因爲我們不能訪問其他結點;

如果我們只能訪問該結點,可以嘗試將該結點的後繼結點的數據複製到當前結點,然後刪除後繼結點

typedef struct  SListNode {
    int  value;    // 保存的值
    struct SListNode* next;    // 保存下一個結點的地址
} SListNode_t;


bool deleteNode (SListNode_t *node) {
	if( NULL == node || NULL == node->next ) 
    {
        return false;
    }   
	SListNode_t * next = node->next;
	node->value = next->value;
	node->next = next->next;
	return true;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章