用数据结构实现有头结点单链表逆置输入形式:第一行输入一个整数N;第二行输入N个整数,以空格作为分隔,创建单链表;输出形式:输出逆置后的单链表,元素之间以空格分隔。
时间: 2023-05-14 21:06:31 浏览: 91
可以使用栈来实现单链表的逆置。具体步骤如下:
1. 创建一个栈,用来存储单链表中的元素。
2. 遍历单链表,将每个元素依次压入栈中。
3. 弹出栈中的元素,依次构建逆置后的单链表。
4. 输出逆置后的单链表。
以下是代码实现:
#include <iostream>
#include <stack>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* reverseList(ListNode* head) {
stack<ListNode*> s;
ListNode* p = head;
while (p != NULL) {
s.push(p);
p = p->next;
}
ListNode* newHead = NULL;
while (!s.empty()) {
ListNode* node = s.top();
s.pop();
if (newHead == NULL) {
newHead = node;
p = newHead;
} else {
p->next = node;
p = p->next;
}
}
p->next = NULL;
return newHead;
}
int main() {
int n;
cin >> n;
ListNode* head = NULL;
ListNode* p = NULL;
for (int i = 0; i < n; i++) {
int x;
阅读全文