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 发布