利用栈的先进后出,先储存链表;
需要注意的是,栈的类型为Node*(因为要储存链表的结点),拷贝时候的边界判断,使用stack的push(),top(),pop()方法。
链表的尾插传参时传链表的二级指针。
#include<iostream>
#include<stack>
using namespace std;
struct Node
{
int value;
Node* next;
};
///倒序遍历
//利用栈先进先出的特性
void BackPint(Node* sql)
{
std::stack<Node*> stack;
Node* node = sql;
while (node != NULL)
{
stack.push(node);
node = node->next;
}
while (!stack.empty())
{
node = stack.top();
cout << node->value << " ";
stack.pop();
}
}
///尾插
void PushBack(Node** sql, int val)
{
Node * node = new Node;
node->value = val;
node->next = NULL;
if (*sql == NULL)
{
*sql = node;
return;
}
//遍历找到最后一个结点
Node *cur = *sql;
while (cur->next != NULL)
{
cur = cur->next;
}
cur->next = node;
}
int main()
{
Node* list=NULL;
PushBack(&list, 1);
PushBack(&list, 2);
PushBack(&list, 3);
PushBack(&list, 4);
PushBack(&list, 5);
PushBack(&list, 6);
PushBack(&list, 7);
BackPint(list);
system("pause");
}