链表翻转

#include <bits/stdc++.h>
#include <unordered_set>
using namespace std;

struct node 
{
	int val;
	node* next;
	node(int x):val(x), next(NULL){}
};

node* list_reverse(node* root) {
	node* pre = NULL, * cur = root;
	while (cur) {
		node* back = cur->next;
		cur->next = pre;
		pre = cur;
		cur = back;
	}
	return pre;
}

void print(node* head) {
	while (head) {
		cout << head->val << " ";
		head = head->next;
	}
	cout << endl;
}

int main() {
	node* root = new node(-1);
	node* cur = root;
	for (int i = 0; i < 5; ++i) {
		cur->next = new node(i);
		cur = cur->next;
	}
	print(root);
	cur = list_reverse(root);
	print(cur);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_24624539/article/details/108613457