您的位置:首页 > 其它

链表的逆序

2016-04-06 23:07 232 查看
单链表的逆序
我们,来看单链表的逆序这个问题。我们应该知道对于空链表或者只有一个节点的链表是不需要逆序的。我们应该首先判断一下这个问题。然后,接着我们维护三个指针分别指向链表的第一第二第三个节点,就是p1,p2,p3;

首先,我们将链表断开就是将p1的next赋空,然后我们开始循环的做一件事情,就是把p2的next赋为p1,然后我们判断p3是不是空(就是如果最后两个节点),如果不是空,我们p2赋值给p1就是把p1向后移动了一个位置,接着我们移动p2,p3就好了,最后我们将头指针指向p2就好了。下面看代码。
PNODE reverse( PNODE *phead )
{
PNODE p1,p2,p3;
if(NULL == *phead || NULL == (*phead)->next )
{
return *phead;
}

p1 = *phead;
p2 = p1->next;
p3 = p2->next;
p1 ->next = NULL;
while( 1 )
{
p2->next = p1;
if( NULL == p3 )
{
break;
}
p1 = p2;
p2 = p3;
p3 = p3->next;
}

*phead = p2;
return *phead;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: