問題如下 輸入:鏈表 a->b->c->d->e中指向節點c的指針 輸出:無返回值,但新鏈表變為a->b->d->e 解答: 想了好久沒想出來,看了提示才知道解法的。這里用到了一個小技巧。要刪除中間節點,但是我們不知道要刪除節點的上一個節點p,所以無法通過修改指針的方法(p->next=del->next)來刪除節點,但知道要刪除節點的后一個節點,那么我們換一個思路,把要刪除的節點的數據與該節點的后一個節點的數據交換,然后刪除后一個節點,從而達到目的。但是該方法不能刪除最后一個節點,原因顯而易見。 代碼如下: // a tricky solution,can't delete the last one element int delete_node(NODE* node) { int data; NODE *p=node->next; node->data=p->data; node->next=p->next; free(p); }