删除一个无头单链表的非尾节点(不能遍历链表)

我们在对单链表进行删除操作的时候,只需要遍历一遍链表即可删除,但是如果不允许遍历链表我们要怎样进行处理呢。
我们如果直接释放掉要删除的节点,那我们就无法得到前一个节点,链表就不能重新链接起来,我们可以将要删除节点的内容改为,该节点下一个节点的内容,然后释放下一节点,这样便不需要知道前一个节点即可完成删除并重新链接。
这里写图片描述

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);
}

猜你喜欢

转载自blog.csdn.net/smx_dd/article/details/79943776
今日推荐