删除一个无头单链表的非尾节点(不能遍历链表)
程序员文章站
2022-06-06 13:34:33
...
我们在对单链表进行删除操作的时候,只需要遍历一遍链表即可删除,但是如果不允许遍历链表我们要怎样进行处理呢。
我们如果直接释放掉要删除的节点,那我们就无法得到前一个节点,链表就不能重新链接起来,我们可以将要删除节点的内容改为,该节点下一个节点的内容,然后释放下一节点,这样便不需要知道前一个节点即可完成删除并重新链接。
typedef struct SListNode
{
struct SListNode* _next;
DataType _data;
}SListNode;
void SListDelNonTailNode(SListNode* pos)
{
assert(pos);
SListNode* next = pos->_next;
pos->_data = next->_data;
pos->_next = next->_next;
free(next);
}