给定一个有序链表进行反转
#include <iostream>
using namespace std;
#include <vector>
struct ListNode
{
int value;
ListNode* next;
ListNode(int x):value(x),next(NULL) {}
};
ListNode* reverseList(ListNode* head)
{
ListNode* temp;
ListNode* pre = NULL;
ListNode* cur = head;
while (cur)
{
temp = cur->next;
cur->next = pre;
pre = cur;
cur = temp;
}
return pre;
}
void printList(ListNode* head)
{
while (head)
{
cout << head->value;
head = head->next;
if (head)
cout << "->";
}
cout << endl;
}
int main()
{
//创建链表
ListNode* head = new ListNode(1);
ListNode* n1 = new ListNode(2);
ListNode* n2 = new ListNode(3);
ListNode* n3 = new ListNode(4);
ListNode* n4 = new ListNode(5);
ListNode* n5 = new ListNode(6);
head->next = n1;
n1->next = n2;
n2->next = n3;
n3->next = n4;
n4->next = n5;
n5->next = NULL;
cout << "反转前:" << endl;
printList(head);
ListNode* node=reverseList(head);
cout << "反转后:" << endl;
printList(node);
system("pause");
return 0;
}
输出结果