数据结构(二):栈与链栈


#include <cstdio> #include <windows.h> #define MAXSIZE 100 struct Node { int data[MAXSIZE]; int top; }; typedef struct Node MyStack; //初始化 void MyStackInit(MyStack S) { S.top = -1; } //判空 BOOL MyStackEmpty(MyStack S) { if (S.top == -1) return TRUE; else return FALSE; } //入栈 void MyStackPush(MyStack S, int x) { if (S.top = MAXSIZE - 1) { printf("栈满"); exit(0); } S.top++; S.data[S.top] = x; } //出栈 int MyStackPop(MyStack S) { int x; if (MyStackEmpty(S) == TRUE) { printf("栈空"); exit(0); } else { x = S.data[S.top]; S.top--; return x; } } //取栈顶 int MyStackGetPop(MyStack S) { if (MyStackEmpty(S) == TRUE) { printf("栈空"); exit(0); } else { return S.data[S.top]; } } /********************************* * 链栈 * **********************************/ struct Node { int data; struct Node* next; }; typedef struct Node MyStackNode; typedef struct { MyStackNode* top; }MyLinkedStack; MyLinkedStack* S; //初始化 void MyLinkedStackInit(MyLinkedStack* S) { S->top = NULL; } BOOL MyLinkedStackEmpty(MyLinkedStack* S) { if (S->top == NULL) return TRUE; else return FALSE; } void MyLinkedStackPush(MyLinkedStack* S, int x) { MyStackNode* ms; ms = (MyStackNode*)malloc(sizeof(MyStackNode)); if (ms = NULL) { printf("申请失败"); exit(0); } else { ms->data = x; ms->next = S->top; S->top = ms; } } int MyLinkedStackPop(MyLinkedStack* S) { MyStackNode* p; int x; if (S->top == NULL) { printf("栈空"); exit(0); } x = S->top->data; p = S->top; S->top = S->top->next; free(p); return x; }

 博客写的丑的我自己不能看了。。。

转载于:https://www.cnblogs.com/Vcanccc/p/5671996.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值