【XDOJ2026秋数据结构】747.反转链表【Compash个人题解】

747.反转链表

问题描述
输入一个链表,反转链表后,输出链表的所有元素。

输入说明
输入第一行为整数n(n>=1),代表测试链表数。
从第二行开始每行表示一个链表,其中第一个数据表示链表中数据个数,其余数据表示要测试的链表中的数据,均为整数。

输出说明
每一行对应一个链表反转后的元素。

输入样例

//输入样例
3
5 1 2 3 4 5
3 2 4 5
1 3

输出样例

//输出样例
5 4 3 2 1
5 4 2
3

#include<iostream>
#include<vector>
struct ListNode
{
	int val;
	ListNode* next = NULL;
	ListNode(int v) : val(v) {}
};
std::vector<ListNode*> lists;
void insertListNode(ListNode*& head, int val)
{
	ListNode* newNode = new ListNode(val);
	if (head == NULL)
	{
		head = newNode;
		return;
	}
	ListNode* p = head;
	while (p->next)
	{
		p = p->next;
	}
	p->next = newNode;
}
ListNode* reverseList(ListNode* head)
{
	ListNode* prev = NULL;
	ListNode* cur = head;
	while (cur)
	{
		ListNode* next = cur->next;
		cur->next = prev;
		prev = cur;
		cur = next;
	}
	return prev;
}
void printList(ListNode* head)
{
	ListNode* p = head;
	if (p == NULL) return;---
	while (p)
	{
		std::cout << p->val << ' ';
		p = p->next;
	}
	return;
}
int main()
{
	int n;
	std::cin >> n;
	for (int i = 0; i < n; i++)
	{
		ListNode* newList = NULL;
		int len;
		std::cin >> len;
		for (int j = 0; j < len; j++)
		{
			int val;
			std::cin >> val;
			insertListNode(newList, val);
		}
		lists.push_back(newList);
	}
	for (auto list : lists)
	{
		printList(reverseList(list));
		std::cout << std::endl;
	}
	return 0;
}
posted @ 2026-10-12 21:30  Compash  阅读(1)  评论(0)    收藏  举报