点击查看代码
//Linked list reversal using stack
#include<iostream>
#include<stack>//stack from standard template library(STL)
using namespace std;
struct node {
char data;
node* next;
};
node* A;//全局头指针
void reverse() {
if (A == NULL) return;//空列表直接退出
stack<node*> S;//node*指针型的stack
node* run = A;
while (run != NULL) {
S.push(run);
run = run->next;
}//遍历打印模式push
run = S.top();//run退回到末节点
A = run;//头指针指向末节点
S.pop();//pop掉末节点地址
while (!S.empty()) {//stack不为空时
run->next = S.top();//run指向节点尾巴指向上一节点
S.pop();//pop掉已用节点地址
run = run->next;//run继续退回(run指向节点尾巴已指向上一节点)
}
run->next = NULL;//1节点尾巴赋空
}
int main() {
}