基于传统指针实现:
#include<iostream>
#include<stack>
#include<deque>
using namespace std;
struct ListNode {
int value_;
ListNode*next_;
};
//从尾部添加链表
void add_to_tail(ListNode**phead, int value) {
ListNode* pnew = new ListNode();
pnew->value_ = value;
pnew->next_ = nullptr;
if (*phead == nullptr) {
*phead = pnew;
}
else {
ListNode*probe = *phead;
while (probe->next_ != nullptr) {
probe = probe->next_;
}
probe->next_ = pnew;
}
}
//遍历链表
void traversal(ListNode*phead) {
if (phead == nullptr) {
cout << "the list is empty" << endl;
}
while (phead != nullptr) {
cout << phead->value_ << endl;
phead = phead->next_;
}
}
//从尾到头打印链表,用栈实现,先进后出
void reverse_output(ListNode*phead) {
stack<ListNode*> temp;
if (phead == nullptr) {
cout << "the list is em