欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 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);
}
相关标签: 单链表