實現一個算法,刪除單向鏈表中間的某個結點,假定你只能訪問該結點。
給定待刪除的節點,請執行刪除操作,若該節點爲尾節點,返回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;
}