#include <iostream>
#include <stack>
using namespace std;
struct Node
{
int value;
Node * next;
Node(int a)
{
value = a;
next = nullptr;
}
Node(int a, Node* b)
{
value = a;
next = b;
}
};
Node* Reverse(Node* pHead)
{
if (!pHead || !pHead->next)
{
return pHead;
}
else
{
Node* ptr = pHead;
stack<Node*> s;
while (ptr->next)
{
s.push(ptr);
ptr = ptr->next;
}
Node * head = ptr;
while (!s.empty())
{
ptr->next = s.top();
ptr = ptr->next;
s.pop();
}
ptr->next = nullptr;
return head;
}
}
int main()
{
Node * d = new Node(8);
Node * c = new Node(7, d);
Node * b = new Node(6, c);
Node * a = new Node(5, b);
Node * temp = a;
while (temp != nullptr)
{
cout <<temp->value << '\t';
temp = temp->next;
}
cout << endl;
Node * result = Reverse(a);
while (result != nullptr)
{
cout <<result->value << '\t';
result = result->next;
}
return 0;
}
【C++代码】链表反向输出
最新推荐文章于 2022-05-20 23:38:23 发布