单链表反序

三个指针,前序指针pprv,当前指针pnow,后续指针pnext

1、让后续指针指向当前指针后续,pnext = pnow->next;

2、让当前指针的后继指向前面的指针,pnow->next = pprv;

3、让前序指针指向当前指针,ppriv = pnow

4、让当前指针指向后续指针,pnow = pnext

5、返回前序指针,pprv

画图略


#include "iostream"

using namespace std;
struct MyLink{
int sno;
float fprice;
MyLink *pnext;
};
MyLink *AddNode(MyLink *phead,int no,float price)
{
if (NULL == phead)
{
phead = new MyLink;
phead->sno = no;
phead->fprice = price;
phead->pnext = NULL;
return phead;
}
MyLink *ptemp =phead,*pend = NULL;
while (ptemp->pnext)
{
ptemp = ptemp->pnext;
}
pend = new MyLink;
pend->sno = no;
pend->fprice = price;
pend->pnext = NULL;
ptemp->pnext = pend;





return phead;
}
void OutPrint(MyLink *phead)
{
if (!phead)
{
return ;
}
MyLink *ptemp = phead;
while (ptemp)
{
printf("当前序号:%d,当前价格:%f\n",ptemp->sno,ptemp->fprice);
ptemp = ptemp->pnext;
}
}
MyLink *recvDlink(MyLink *phead)
{
if (!phead||!phead->pnext)
{
return phead;
}


MyLink *pprv = NULL,*pnow=phead,*pnext = NULL;
while (pnow )
{

pnext = pnow->pnext;
pnow->pnext = pprv;
pprv = pnow;
pnow = pnext;


}
return pprv;




}
int main()
{


MyLink *pHead = NULL;
/* while (1)
{
int no;float price;
cout<<"输入节点号:";
cin>>no;
if (!no) break;

cout<<"输入节点价格:";
cin>>price;
pHead = AddNode(pHead,no,price);
}*/
pHead = AddNode(pHead,1,1.1);
pHead = AddNode(pHead,2,2.1);
pHead = AddNode(pHead,3,3.1);
pHead = AddNode(pHead,4,4.1);
OutPrint(pHead);
pHead = recvDlink(pHead);
OutPrint(pHead);
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值