leetcode 链表问题请教

leetcode第143题 重排列表描述为
给定一个单链表 L:L0→L1→…→Ln-1→Ln ,
将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

其中里面一个答案如下所示,
class Solution {
public:
void reorderList(ListNode* head) {
vector<ListNode*> vList;
auto p=head;
while§
{
vList.push_back§;
p=p->next;
}
int i=0;int j=vList.size()-1;
ListNode *p2=new ListNode(0);
p=p2;
while(i<=j)
{
p->next=vList[i++];
p=p->next;
if(i<=j)
{
p->next=vList[j–];
p=p->next;
}
}
p->next=NULL;
// head=p;
}
};
我想请问的是 函数处理过程中,对节点有一段重新赋值,即 p=p2,p2为一个新建节点;。那这边即使对p进行处理后,如果不执行 head=p 那这边返回的head岂不是没有变化?因为你的处理都交给节点p了 而节点p到最后野没有将其赋值给head节点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值