已解决
C语言动态实现顺序栈
来自网友在路上 161861提问 提问时间:2023-09-24 22:11:48阅读次数: 61
最佳答案 问答题库618位专家为你答疑解惑
#include <bits/stdc++.h>
using namespace std;
#define ElemType int
#define MAXSIZE 200
#define OK 1
/* 可以定义一个 overflow是溢出,为-1 */
typedef struct //定义栈的结构体
{ElemType* base;ElemType* top;int stacksize;
}SqStack;void Init(SqStack* s) //初始化函数
{s->base = (ElemType*)malloc(MAXSIZE * sizeof(ElemType));memset(s->base, 0, MAXSIZE * sizeof(ElemType));if (!s->base) /**若栈底为空,则栈溢出*/exit(-1); /**停止程序*/s->top = s->base;s->stacksize = MAXSIZE;
}void Destroy(SqStack* s) //销毁栈
{free(s->base);s->stacksize = 0;s->base = NULL;s->top = NULL;
}void Clear(SqStack* s) //清空栈
{s->top = s->base;
}bool Empty(SqStack *s) //判断是否为空
{return s->top == s->base;
}ElemType Top(SqStack *s) //返回栈顶元素
{return *(s->top - 1);
}
bool Push(SqStack* s, ElemType e)
{if (s->top - s->base + 1 > s->stacksize){s->base = (ElemType*)realloc(s->base, (MAXSIZE + 1) * sizeof(ElemType));s->stacksize += 1;cout << "增加一个" << endl;}if (!s->base)exit(-1);*(s->top) = e;s->top++;return OK;
}bool Pop(SqStack* s)
{if (Empty(s)){cout << "删除错误" << endl;exit(-1);}s->top--;return OK;
}int main()
{SqStack S1;Init(&S1);Push(&S1, 1);Push(&S1, 2);Push(&S1, 3);Push(&S1, 4);Push(&S1, 5);Push(&S1, 6);SqStack S2;Init(&S2);Push(&S2, 1);Push(&S2, 2);Push(&S2, 3);Push(&S2, 4);Push(&S2, 5);Push(&S2, 6);while (!Empty(&S2)){cout << Top(&S2) << " ";Pop(&S2);}Destroy(&S1);Destroy(&S2);return 0;
}
查看全文
99%的人还看了
相似问题
- 如何判断一个公司是否为空壳公司
- Hive Lateral View explode列为空时导致数据异常丢失
- vue.js javascript js判断是值否为空
- 【Python 千题 —— 基础篇】判断列表是否为空
- C++ Package继承层次,采用继承实现快递包裹的分类计价(分为空运2日达、陆运3日达)。
- UE5加载websocket模块为空
- Controller接收Postman的raw参数时,属性值全部为空
- 【顺序栈的表示和实现,顺序栈的初始化,是否为空,清空顺序栈,销毁顺序栈,】
- XLSX.utils.sheet_to_json()解析excel,给空的单元格赋值为空字符串
- 总结 Map 集合哪些 K/V 可以为空?哪些不可以为空?原因是什么?
猜你感兴趣
版权申明
本文"C语言动态实现顺序栈":http://eshow365.cn/6-13031-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!