#include <iostream>
using namespace std;
struct ListNode
{
int val;
ListNode* next;
};
ListNode* revereList(ListNode* head)
{
ListNode* pre = NULL;
ListNode* cur = head;
ListNode* nex = NULL;
while (cur)
{
nex = cur->next;
cur->next = pre;
pre = cur;
cur = nex;
}
return pre;
}
ListNode* revereList2(ListNode* head)
{
if (head == NULL || head->next == NULL)
{
return NULL;
}
ListNode* p1 = head;
ListNode* p2 = p1->next;
ListNode* p3 = p2->next;
p1->next = NULL;
while (p3 != NULL)
{
p2->next = p1;
p1 = p2;
p2 = p3;
p3 = p3->next;
}
p2->next = p1;
head = p2;
return head;
}
void printList(ListNode * head)
{
while (head)
{
cout << head->val;
head = head->next;
if (head)
cout << "->";
}
cout << "\n";
}
int main()
{
//创建链表
ListNode* head = NULL;
ListNode* cur = NULL; //current
for (int i = 1; i <= 6; ++i)
{
ListNode* node = new ListNode;
node->val = i;
node->next = NULL;
if (head == NULL)
{
head = node;
cur = node;
}
else
{
cur->next = node;
cur = node;
}
}
printList(head); //打印当前链表
//printList(revereList(head)); //第一种方法
printList(revereList2(head)); //第二种方法
return 0;
std::cout << "Hello World!\n";
}