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,..., ...
 
随机推荐
- Tomcat 配置文件详解之-- server.xml
			
一.背景 Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛.server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat ...
 - 如何利用python的xlrd模块读取日期格式的Excel
			
经常使用python操作Excel,就会遇到各种坑,比如,有时候你读取到的某一单元格的数据,你预想的结果本来应该是这样的,但是它却是这样的,真是很蛋疼.于是你会找各种解决办法,去解决这个问题!所以鄙人 ...
 - Software--电商平台系统--P1 需求分析
			
2018-01-11 13:58:43 电商平台 需求 1. 网站的页面展示 页面的布局: Product Catalog (商品目录浏览功能): 首页显示"置顶" 商品: ...
 - WindowsServer2012搭建FTP服务器站点
			
公司需要搭建一个FTP服务器给银行推送账单,这个文章整理的比较详细,可以参考 数据来源: https://blog.csdn.net/u010483330/article/details/125931 ...
 - WAP-2.1
			
WAP 是一种源代码静态分析和数据挖掘工具,用于检测和纠正用 PHP 4.0 或更高版本编写的 Web 应用程序中的输入验证漏洞,且误报率较低. WAP 检测并纠正以下漏洞: SQL Injectio ...
 - 合并B站video.m4s和audio.m4s
			
ffmpeg -i D:\a\video.m4s -i D:\a\audio.m4s -codec copy D:\a\a.mp4
 - VUE 一些小功能(查重、逻辑删除)
			
查重就是在表中查找是否有该值,如果有返回0没有则返回1 在API写添加方法时可以直接通过该方法返回值进行添加,如果是0则添加,1则重名 不进行添加 逻辑删除就是在信息表中添加一个删除状态的字段,比 ...
 - Linux基础命令、按照软件、数据库基础操作
			
一.Linux基础命令 1.防火墙 systemctl - 控制 systemd 系统与服务管理器 systemctl 可用于 检查和控制 systemd(1) 系统与服务管理器的 状态 常用的命令: ...
 - python起航之路 Day1
			
一.Python安装 windows 1.下载安装包 https://www.python.org/downloads/2.安装 默认安装路径:C:\python273.配置环境变量 [右键计算机]- ...
 - UE5农场项目小功能(1)-砍树
			
砍树功能效果的实现  在UE中想做一个砍树的功能,B站上没找到什么教程,最后在油管上找到个视频并跟着实现了,一共设计到三个蓝图和一个什么也没写的蓝图接口,下面介绍下步骤. 1.角色蓝图的部分 人物这 ...