字节跳动反转链表--头插法c++
题目描述 给一个链表,将其倒置后返回新的头节点即可
题目链接:
(https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=188&&tqId=35160&rp=1&ru=/activity/oj&qru=/ta/job-code-high-week/question-ranking)
可能面临的问题:
1.指针报错(越界或者循环过多):
看一下是不是在头插入的时候待插入节点的指针没有保持原来的数值,也就是在头插的时候值被覆盖掉了 用一个临时变量保存一下就可以了
2.整体思路没问题,case过不了(0%):当传入的指针为空的时候要判断一下直接返回就可以了,我外加了统计一下长度如果长度为1直接返回就可以了。注意最后头插入的循环条件,如果是计数的话注意边界
代码如下写的有点乱
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if(pHead==NULL) return pHead; //当长度为0的时候直接返回
ListNode* end=pHead;
long long int len=0;
while(end->next!=NULL){
end=end->next;
len++;
}
if(len==1) return pHead;//当长度为1的时候直接返回
ListNode * head=end;
for(int i=0;i<len;i++){
ListNode* tmp=pHead->next;
pHead->next=head->next;
head->next=pHead;
pHead=tmp;
}
return head;
}
};
不想上研究生了9月份才开始找工作太难了233333
版权声明:本文为weixin_44026260原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。