C/C++ 数据结构顺序栈的基本操作实现
- #include <iostream>
- #include <Windows.h>
- using namespace std;
- #define MAXSIZE 6
- //顺序栈的实现
- typedef struct {
- int* base;
- int* top;
- int stacksize;
- int Length;
- }SQstack;
- //初始化
- void Initstack(SQstack& S) {
- S.base = new int[MAXSIZE];
- S.top = S.base;
- S.stacksize = MAXSIZE;
- S.Length = 0;
- }
- //入栈
- bool InsertStack(SQstack& S,int e) {
- if (S.top - S.base == S.stacksize) {
- cout << "栈已满,无法入栈!";
- return false;
- }
- //*(S.top++) = e;
- *S.top = e;
- S.top++;
- S.Length++;
- return true;
- }
- //出栈
- bool DeleteStack(SQstack& S, int &e) {
- if (S.base == S.top) {
- cout << "栈为空,无法出栈!" << endl;
- return false;
- }
- S.top--;
- e = *S.top;
- //e = *(--S.top);
- S.Length--;
- return true;
- }
- //获取栈顶元素
- void getTop(SQstack& S,int &e) {
- e = *(S.top-1);//返回栈顶元素的值,栈顶指针不变
- cout <<"栈顶元素为:"<< e << " ";
- cout << endl;
- }
- //判断栈是否为空
- bool EmptyStack(SQstack& S) {
- return S.base == S.top;
- }
- //销毁顺序栈
- void Destory(SQstack& S) {
- if (S.base) {
- delete S.base;
- S.base = NULL;
- }
- }
- //获取顺序栈的长度
- int getLnegth(SQstack& S) {
- return S.Length;
- }
- void showMenu() {
- cout << "\t顺序栈的基本操作" << endl;
- cout << "0.退出" << endl;
- cout << "1.入栈" << endl;
- cout << "2.出栈" << endl;
- cout << "3.获取栈顶元素" << endl;
- cout << "4.判断栈是否为空" << endl;
- cout << "5.返回栈的元素个数" << endl;
- }
- int main() {
- SQstack Q;
- int choose = 0;
- int e = 0;//要入栈的元素
- int n = 0;//入栈的元素个数
- int e1 = 0;//出栈的元素
- int e2 = 0;//栈顶元素
- Initstack(Q);
- showMenu();
- bool flag = -1;
- while (flag) {
- cout << "请选择:";
- cin >> choose;
- switch (choose)
- {
- case 1:
- cout << "请输入要入栈的元素个数:";
- cin >> n;
- while (n > 0) {
- cout << "请输入要入栈的元素:";
- cin >> e;
- if (InsertStack(Q, e)) {
- cout << "元素入栈成功!" << endl;
- }
- else {
- cout << "元素入栈失败!" << endl;
- }
- n--;
- }
- break;
- case 2:
- cout << "出栈------" << endl;
- if (DeleteStack(Q, e1)) {
- cout << "出栈的元素 :" << e1 << endl;
- }
- break;
- case 3:
- getTop(Q, e2);
- break;
- case 4:
- if (EmptyStack(Q)) {
- cout << "顺序栈为空!" << endl;
- }
- else {
- cout << "顺序栈不为空!" << endl;
- }
- break;
- case 5:
- cout << "顺序栈的长度为:" << getLnegth(Q) << endl;
- break;
- case 0:
- default:
- cout << "退出系统!" << endl;
- flag = 0;
- }
- }
- cout << "销毁顺序表----" << endl;
- Destory(Q);
- system("pause");
- return 0;
- }
C/C++ 数据结构顺序栈的基本操作实现的更多相关文章
- 数据结构 - 顺序栈的实行(C语言)
数据结构-顺序栈的实现 1 顺序栈的定义 既然栈是线性表的特例,那么栈的顺序存储其实也是线性表顺序存储的简化,我们简称为顺序栈.线性表是用数组来实现的,对于栈这种只能一头插入删除的线性表来说,用数组哪 ...
- 顺序栈的基本操作(C语言)
由于现在只学了C语言所以就写这个C语言版的栈的基本操作 这里说一下 :网上和书上都有这种写法 int InitStack(SqStack &p) &p是取地址 但是这种用法好像C并不 ...
- 数据结构 - 顺序栈的实现 C++
顺序栈封装 C++ 使用C++对顺序栈进行了简单的封装,实现了栈的基本操作 封装方法: pop(),top(),size(),empty(),push() 代码已经过测试 #pragma once # ...
- D_S 顺序栈的基本操作
// main.cpp #include <iostream> using namespace std; #include "Status.h" typedef in ...
- 数据结构——顺序栈(sequence stack)
/* sequenceStack.c */ /* 栈 先进后出(First In Last Out,FILO)*/ #include <stdio.h> #include <stdl ...
- 数据结构--顺序栈--C++实现
#include <iostream> #define MaxSize 5000 using namespace std; template <typename T> clas ...
- 数据结构之顺序栈SqStack
顺序栈SqStack 基本操作 Status InitStack()//构造一个空栈S Status DestroyStack()//销毁栈S,S不再存在 Status ClearStack()//把 ...
- 数据结构——Java实现顺序栈
一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 顺序栈是指利用顺序存储结构实现 ...
- 【C#】【数据结构】005-栈:顺序栈
C#数据结构:顺序栈 1.自定义顺序栈结构: /// <summary> /// 顺序栈 /// </summary> /// <typeparam name=" ...
- 数据结构(C实现)------- 顺序栈
栈是限定仅在表的一端进行插入或删除的纯属表,通常称同意插入.删除的一端为栈顶(Top),对应在的.则称还有一端为栈底(Bottom). 不含元素的栈则称为空栈. 所设栈S={a1,a2,a3,..., ...
随机推荐
- Java注解及应用原理
视频地址:https://www.bilibili.com/video/BV1Py4y1Y77P/?spm_id_from=333.337.search-card.all.click&vd_s ...
- Python学习笔记组织文件之用zipfile模块压缩文件
随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...
- git 与远程仓库关联返回 fatal: remote origin already exists 解决方法
今天领导新建了一个代码仓库,我按照流程一步步推送代码,结果到了关联仓库的时候,返回 fatal: remote origin already exists(远程源已经存在) 下面是解决方法 1.删除远 ...
- idea热部署插件JRebel激活
首先到github上去下载一个反向代理软件,我下载的是windows x64版本. https://github.com/ilanyu/ReverseProxy/releases/tag/v1.4 第 ...
- antd DatePicker限制日期的选择
import React from 'react'; import ReactDOM from 'react-dom'; import {Input,DatePicker,Form,Col,Butto ...
- 请求/响应拦截器 给请求添加token认证
- 基于ALSA库实现音频采集和播放遇到的问题
最近基于Linux系统C语言实现音频的采集和播放,建立了两个子线程,一个通过调用snd_pcm_readi来实现采集数据,并存入FIFO中,另一个从FIFO中取数据并通过udp的sendto发送出去, ...
- 使用端口排查解决启动Tomcat端口被占问题
有时候在eclipse中启动Tomcat或启动纯净版的Tomcat会出现端口被占的问题,下面菜鸟小编带大家进行端口排查解决问题.(下面假设是我的80端口被占了,如果你不知道你的Tomcat端口是多少就 ...
- Qt实现带有映射关系的进度条
1.编写继承自widget的新类,这里我们定义为colorWidget; 2.在colorWidget中添加私有变量QVector<QRect> m_rects,用于存放进度条的不同区间( ...
- phpmyadmin scripts/setup.php 反序列化漏洞(WooYun-2016-199433)(Kali)
phpmyadmin 2.x版本中存在一处反序列化漏洞,通过该漏洞,攻击者可以读取任意文件或执行任意代码. 通过vulhub靶场进行复现操作 1.首先搭建靶场环境(采用Kali) cd vulhu ...