标签:链表 输出 丢失 思路 反转链表 str public nod cpp
题目:
输入一个链表,反转链表后,输出链表的所有元素。
思路:
反转链表,对于片段 1--->2--->3循环操作; 要反转链表需要两步:
一,将2->next指向1 (如果不保存3那么此时就丢失了对3的引用)
二,将链表往后移 即 : 1=2; 2=3;3=3->next
注意的点:
一,首节点的next要指向NULL
二:链表的长度可能小于3
代码:
/*
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 NULL;
ListNode* newHead;
ListNode* p1=pHead;
ListNode* p2=pHead->next;
ListNode* p3;
if(p2!=NULL){
p3=p2->next;
p1->next=NULL;
p2->next=p1;
while(p3!=NULL){
p1=p2;
p2=p3;
p3=p3->next;
p2->next=p1;
}
newHead=p2;
}else{
p1->next=NULL;
newHead=p1;
}
return newHead;
}
};
标签:链表 输出 丢失 思路 反转链表 str public nod cpp
原文地址:http://www.cnblogs.com/llauser/p/7516311.html