#include<iostream> using namespace std; #define MAXSIZE 100 typedef int SElemType; typedef int Status; typedef struct StackNode { SElemType data; struct StackNode* next; }StackNode, * LinkStack; Status InitStack(LinkStack&); Status Push(LinkStack&, SElemType); Status Pop(LinkStack&, SElemType&); int main() { LinkStack S; SElemType e; while (true) { cin >> e; if (e == 'a' || e == 'b' || e == 'c') { !Push(S,e); } else if (e == '0') { cout << "输出栈顶元素: "; !Pop(S,e); break; } } return 0; } Status InitStack(LinkStack& S) { S = NULL; return 1; } Status Push(LinkStack& S, SElemType e) { StackNode* p = new StackNode; p->data = e; p->next = S; S = p; return 1; } Status Pop(LinkStack& S, SElemType& e) { if (S == NULL) return 0; e = S->data; StackNode* p = S; S = S->next; delete p; return 1; }
时间: 2024-04-26 20:20:32 浏览: 50
使用include <iostream>时一定要加using namespace std
这段代码是一个基于链表实现的栈结构。其中定义了一个结构体StackNode作为栈的节点,包含了数据域和指向下一个节点的指针。另外定义了一个LinkStack作为栈的头指针。主函数中通过循环读入字符,将字符插入栈中。当读入字符为0时,弹出栈顶元素并输出。
代码中的InitStack函数用于初始化栈,即将头指针置为NULL。Push函数用于插入元素,先创建一个新节点,将数据域赋值为插入元素,然后将新节点插入到头部,头指针指向新节点。Pop函数用于弹出元素,先判断栈是否为空,如果为空则返回0。否则将栈顶元素赋值给传入的参数e,然后将头指针指向下一个节点,释放当前节点。最后返回1表示弹出成功。
阅读全文