/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
//题目分析:
//统一链表格式
ListNode* dummyhead = new ListNode(0); //设置虚假的头结点 为了使得单节点和多节点情况统一
dummyhead->next = head;
//当前和上一个
ListNode* first_node = new ListNode(0);
first_node=head;
ListNode* second_node = new ListNode(0);
second_node=head;
ListNode* temp_node = new ListNode(0);
temp_node=nullptr;
if(head!=nullptr)
temp_node=head->next;
//第一个节点指向空
if(head!=nullptr)
head->next=nullptr;
// 步进用节点 节点与指针还是不同的
while(temp_node!=nullptr)
{
first_node=temp_node;
temp_node=first_node->next; //最后一步之前temp都记录
std::cout<<" second1 "<<second_node->val<<std::endl;
first_node->next=second_node;
second_node=first_node;
std::cout<<" first "<<first_node->val<<std::endl;
std::cout<<" second2 "<<second_node->val<<std::endl;
}
// ListNode *show_node;
// show_node=first_node; //构造显示节点
// while(show_node->next!=nullptr)
// {
// std::cout<<" "<val<<" ";
// show_node=show_node->next;
// }
// std::cout<<" "<val<<" "; //打印最后一个
// std::cout<<" "<< std::endl;
return first_node;
}
};