我们在对单链表进行删除操作的时候,只需要遍历一遍链表即可删除,但是如果不允许遍历链表我们要怎样进行处理呢。
我们如果直接释放掉要删除的节点,那我们就无法得到前一个节点,链表就不能重新链接起来,我们可以将要删除节点的内容改为,该节点下一个节点的内容,然后释放下一节点,这样便不需要知道前一个节点即可完成删除并重新链接。
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);
}
本文介绍了一种不遍历单链表即可删除非尾节点的方法。通过修改待删节点的数据为下一个节点的数据,并调整指针指向,实现节点删除且保持链表连续。
&spm=1001.2101.3001.5002&articleId=79943776&d=1&t=3&u=50859db8cb3c424b87bd0cd5c1427c73)
747

被折叠的 条评论
为什么被折叠?



