void DeleteRandomNode(node *pCurrent)
{//从无头单链表中删除结点
assert(pCurrent != NULL);
node *pNext = pCurrent->next;
if(pNext != NULL)
{
pCurrent->next = pNext->next;
pCurrent->data = pNext->data;
delete pNext;
}
}
void ReverseList(node *&head)
{//给点头指针(有头结点),只遍历一次将单链表逆转反序
node *pCurrent,*pNext;
pNext = head->next;
head->next = NULL; //把头结点拿出来
while(pNext)
{//头插法 插入结点
pCurrent= pNext;
pNext = pNext->next;
pCurrent->next = head->next; //从头插入
head->next = pCurrent;
}
}
void ReverseListNohead(node *&head)
{//没有头结点,将单链表逆转反序
node *pPre,*pCurrent,*pNext;
pPre = head;
if(pPre == NULL) //链表没有结点,头指针指向NULL
return ;
else //否则,跟上面一样
{
pNext = pPre->next;
while(pNext)
{
pCurrent = pNext;
pNext = pNext->next;
pCurrent->next = pPre;
pPre = pCurrent;
}
}
head->next = NULL; //将第一个结点next改为NULL
head = pCurrent; //最后一个结点(pCurrent)改为head
}
编程之美-从无头单链表中删除结点
最新推荐文章于 2023-01-14 18:56:57 发布
本文详细介绍了在单链表中删除指定节点的方法,并通过实例演示了如何使用头插法将单链表进行反转。对于无头结点的情况,同样提供了相应的解决方案。
4555

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



