#include <iostream> #include <cstdio> #include <cstdlib> using namespace std; typedef char StackElemType; typedef struct LinkStackNode { StackElemType data; struct LinkStackNode *next; }LinkStackNode, *LinkStack; LinkStack CreateLinkStack() { LinkStack top = (LinkStack)malloc(sizeof(LinkStackNode)); top->next = NULL; return top; } int Push(LinkStack top, StackElemType x) { LinkStackNode *temp = (LinkStackNode *)malloc(sizeof(LinkStackNode)); if(temp == NULL) { return false; } temp->data = x; temp->next = top->next; top->next = temp; return true; } int Pop(LinkStack top, StackElemType *x) { LinkStackNode *temp; temp = top->next; if(temp == NULL) { return false; } top->next = temp->next; *x = temp->data; delete temp; return true; } int scan() { int n; cout << "-----------------++++++++++++++++++-------------------" << endl; cout << " 请选择所要进行的操作 " << endl; cout << " 1.入栈 2.出栈 " << endl; cout << "-----------------++++++++++++++++++-------------------" << endl; cin >> n; getchar(); return n; } int main() { int quit = 0; LinkStack top = CreateLinkStack(); StackElemType x; while(!quit) { switch(scan()) { case 1 : cout << "请输入要入栈的元素..." << endl;cin >> x;Push(top, x);break; case 2 : if(Pop(top, &x))cout << x << " 元素出栈..." << endl;else cout << "元素为空" << endl;break; default: cout << "输入错误" << endl;quit = 1; } } return 0; }