链表的逆序


单链表的逆序
我们,来看单链表的逆序这个问题。我们应该知道对于空链表或者只有一个节点的链表是不需要逆序的。我们应该首先判断一下这个问题。然后,接着我们维护三个指针分别指向链表的第一第二第三个节点,就是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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值