链表反转C++

给定一个有序链表进行反转

#include 
using namespace std;
#include 

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;
}

输出结果

链表反转C++_第1张图片

 

你可能感兴趣的:(链表,数据结构,c++)