C#实现堆栈结构的定义、入栈、出栈
本文介绍C#实现堆栈结构的定义、入栈、出栈
1、栈的定义
///
/// 栈定义
///
public struct SqStack {
public int[] data;
public int top;//栈顶
}
2、判断栈是否为空
///
/// 判断栈是否为空
///
///
///
bool StackEmpty(SqStack S) {
if (S.top == -1)
{
return true;
}
else {
return false;
}
}
3、栈初始化
///
/// 栈初始化
///
///
static void InitStack(ref SqStack S)
{
S.top = -1;
}
4、压栈
///
/// 压栈
///
///
///
static bool Push(ref SqStack S,int e) {
if (S.top >= MaxSize - 1) {
return false;
}
S.top = S.top+1;
S.data[S.top] = e;//先加1,再进栈
return true;
}
5、出栈
///
/// 出栈
///
///
///
///
static bool PoP(ref SqStack S, ref int e) {
if (S.top==-1) { return false; }
e = S.data[S.top–];//出栈
return true;
}
6、读取栈顶元素
///
///
///读取栈顶元素
///
///
///
///
bool GetTop(ref SqStack S, ref int e) {
if (S.top == -1) { return false; }
e = S.data[S.top];//读取元素
return true;
}
7、实际main函数测试
public const int MaxSize = 50;//定义栈的元素最大值
static void Main(string[] args)
{
SqStack S = new SqStack() ;
S.data = new int[MaxSize];
int x=0;
//初始化栈
InitStack(ref S);
//进栈
while (x!=999) {
Console.WriteLine(“请输入栈元素”);
x = int.Parse(Console.ReadLine());//字符转为整型
if (x != 999) {
Push(ref S, x);
}
}
Console.WriteLine("栈顶元素:"+S.data[S.top]+"栈的元素个数:"+(S.top+1));
Console.WriteLine("出栈元素如下");
while (S.top!=-1) {
PoP(ref S,ref x);
Console.WriteLine(x);
}
Console.ReadLine();
}
相关文章
- 基于C#的波形显示控件的实现_kaic
- C#:异常处理(转载18)
- 【转】MongoDB C# / .NET Driver 中IMongoQuery的内部实现Query的用法
- C#.NET 大型企业信息化系统 - 防黑客攻击 - SSO系统加固优化经验分享
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 实现缓存预热
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 角色成员功能的改进支持公司加入到角色
- 使用 vscode 编写 c# 未能找到类型或命名空间名称
- c#中实现拷贝对象的案例
- C#实现图的广度优先搜索BFS算法--完整代码
- C#实现图的邻接矩阵和邻接表结构
- C#实现二叉树的层次遍历
- C#学习之web网站制作入门篇(ASP.NET)
- C#连接mysql数据库插入数据后获取自增长主键ID值
- C#实现文件压缩解压类
- C# 获取当前方法的名称空间、类名和方法名称
- C# 使用RestSharp实现Postman中的各种形式的请求
- C# 将多个图片合成 pdf 及 多个pdf 合成 pdf 方案
- C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有(二)
- C#基础系列——委托实现简单设计模式
- C#实现中国天气网JSON接口测试
- Unity3d C#实现基于SocketIOUnity的与后端(node.js为例)Socket通信功能(含工程)
- Unity3d 基于xlua热更新实现系列一:登录功能熟悉lua重写C#(含源码)
- Unity3d C#利用OpenCV插件实现大华、海康摄像头广角(桶型)畸变矫正功能
- Unity3d C# 接入海康威视摄像头SDK实现接口控制功能(如:控制云台)
- C#手动操作DataGridView之------使用各种数据源填充表格实例
- .NET(C#) Thread、Task或Parallel实现多线程的使用总结
- .Net(C#) 使用ImpromptuInterface动态实现的静态接口(duck casting)
- 谈谈C# 4.0新特性“缺省参数”的实现
- 用C#实现修改网页数据
- 2019-11-20-dotnet-Blazor-用-C#-控制界面行为
- C# 快速释放内存的大数组
- C# 不能用于文件名的字符