C#数据结构:顺序栈

  • 1、自定义顺序栈结构:
/// <summary>
/// 顺序栈
/// </summary>
/// <typeparam name="T"></typeparam>
public class SeqStack<T>
{
private T[] data;
private int top; ///*用来存放栈顶元素的下标,top 为-1 表示空栈*/ public SeqStack(int size)
{
data = new T[size];
top = -1;
} public SeqStack() : this(10)//默认构造函数,最大容量10
{ } //栈最大容量
public int MaxSize
{
get
{
return data.Length;
}
} //判空
public bool IsEmpty()
{
return top == -1;
} //判满
public bool IsFull()
{
return top == data.Length - 1;
} //进栈
public void Push(T item)
{
if(IsFull())
{
Debug.LogError("栈满!");
return;
}
data[++top] = item;
} //出栈
public T Pop()
{
if(IsEmpty())
{
Debug.LogError("栈空,无法出栈!");
return default(T);
}
return data[top--];
} //访问栈顶
public T Peek()
{
if (IsEmpty())
{
Debug.LogError("栈空,无法访问栈顶!");
return default(T);
}
return data[top];
} //栈中元素个数
public int Count
{
get
{
return top + 1;
}
} //清空栈
public void Clear()
{
top = -1;
}
}

顺序栈:测试用例
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class _005_SeqStack : MonoBehaviour
{
SeqStack<string> seqStack; void Start()
{
//初始化栈
seqStack = new SeqStack<string>(4);//size=4 //栈最大容量
Debug.Log("栈最大容量:" + seqStack.MaxSize); //判空
Debug.Log("栈是否空:" + seqStack.IsEmpty()); //判满
Debug.Log("栈是否满:" + seqStack.IsFull()); //进栈
Debug.Log("进栈:" + "1,2,3,4");
seqStack.Push("1");
seqStack.Push("2");
seqStack.Push("3");
seqStack.Push("4"); //栈中元素个数
Debug.Log("栈中元素个数: " + seqStack.Count); //判满
Debug.Log("栈是否满:" + seqStack.IsFull()); //出栈
Debug.Log("出栈-----出栈值为:" + seqStack.Pop()); //栈中元素个数
Debug.Log("出栈后,栈中元素个数: " + seqStack.Count); //访问栈顶元素
Debug.Log("栈顶元素值: " + seqStack.Peek()); //栈中元素个数
Debug.Log("访问栈顶后,栈中元素个数: " + seqStack.Count); //清空栈
seqStack.Clear();
Debug.Log("清空栈!"); //栈中元素个数
Debug.Log("清空栈后,栈中元素个数: " + seqStack.Count);
} }

输出结果:

注意:

1、栈也是表结构,只是限制了表的操作位置,栈的操作只能在栈顶

2、栈是先进后出

3.访问栈顶的Peek()操作,不会改变栈顶指针。

【C#】【数据结构】005-栈:顺序栈的更多相关文章

  1. 数据结构:C_顺序栈的实现

    数据结构顺序栈的实现(C语言版) 1.写在前面 栈是一种遵循元素先进(Push)后出(Pop)规则的线性表,它的实现可以用数组或者链表. ..... 2.代码分解 2.1对栈的结构定义: typede ...

  2. TOJ 数据结构实验--静态顺序栈

    描述 创建一个顺序栈(静态),栈大小为5.能够完成栈的初始化.入栈.出栈.获取栈顶元素.销毁栈等操作. 顺序栈类型定义如下: typedef struct {  int data[Max];    i ...

  3. 数据结构——Java实现顺序栈

    一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 顺序栈是指利用顺序存储结构实现 ...

  4. TZOJ 数据结构实验--静态顺序栈

    描述 创建一个顺序栈(静态),栈大小为5.能够完成栈的初始化.入栈.出栈.获取栈顶元素.销毁栈等操作. 顺序栈类型定义如下: typedef struct {  int data[Max];    i ...

  5. C++语言实现顺序栈

    C++语言实现顺序栈 在写C语言实现顺序栈的时候,我已经向大家介绍了栈的特点以及介绍了栈的相关操作,并利用C语言实现了相关算法.在这里小编就不在继续给大家介绍了,需要温习的可以去我的博客看看.在这篇博 ...

  6. 顺序栈,链栈,队列java实现

    顺序栈 /** * 顺序栈 * */ public class SqStack { //栈的大小 private int maxSize; //栈顶指针 private int top; privat ...

  7. 数据结构Java实现05----栈:顺序栈和链式堆栈

    一.堆栈的基本概念: 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除 ...

  8. 数据结构Java实现03----栈:顺序栈和链式堆栈

    一.堆栈的基本概念: 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除 ...

  9. 利用顺序栈解决括号匹配问题(c++)-- 数据结构

    题目: 7-1 括号匹配 (30 分)   给定一串字符,不超过100个字符,可能包括括号.数字.字母.标点符号.空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配. 输入格式: 输入在一行 ...

  10. 顺序栈操作--数据结构(C++)版

    最近学习数据结构,一开始接触感觉好难,颓废了一段时间,后来又重新翻开学习,突然感觉到很大的兴趣.对这些代码的运用都有了 一些新的认识.下面简单的讲述下最新学到的顺序栈,不知道大家学习的时候会不会有感觉 ...

随机推荐

  1. Lightoj 1044 - Palindrome Partitioning (DP)

    题目链接: Lightoj  1044 - Palindrome Partitioning 题目描述: 给一个字符串,问至少分割多少次?分割出来的子串都是回文串. 解题思路: 先把给定串的所有子串是不 ...

  2. 2017年“嘉杰信息杯” 中国大学生程序设计竞赛全国邀请赛 Highway

    Highway Accepted : 122   Submit : 393 Time Limit : 4000 MS   Memory Limit : 65536 KB Highway In ICPC ...

  3. 第02课 操作系统及Linux 系统介绍

    1.操作系统介绍 操作系统(Operating System,简称OS),是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心. 操作系统的作用是管 ...

  4. shell expect

    关键的action spawn     调用要执行的命令expect     捕捉用户输入的提示 send        发送需要交互的值,替代了用户手动输入内容set           设置变量值 ...

  5. LN : leetcode 486 Predict the Winner

    lc 486 Predict the Winner 486 Predict the Winner Given an array of scores that are non-negative inte ...

  6. CF385C Bear and Prime Numbers

    思路: 需要对埃氏筛法的时间复杂度有正确的认识(O(nlog(log(n)))),我都以为肯定超时了,结果能过. 实现: #include <bits/stdc++.h> using na ...

  7. ES-自然语言处理之中文分词器

    前言 中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块.不同于英文的是,中文句子中没有词的界限,因此在进行中文自然语言处理时,通常需要先进行分词,分词效果将直接影响词性.句法树 ...

  8. 必看的dockerfile禁忌与建议!

    直接上对照组(看第三个run) test1 FROM centos MAINTAINER ** ​ RUN yum -y update RUN yum -y install wget ​ RUN wg ...

  9. el-select,选择一行,取值行的对象.

      <el-select v-model="set_invoice_form.InvoiceType" placeholder="请选择" :disabl ...

  10. 盘点那些年,被Oracle收购的公司

    微博上看到一图,很清晰.盘点那些年,被Oracle收购的公司,Oracle日益强大,都收购了哪些公司呢?别再以为只有Sun啦...看看你都知道哪些? ps:Strategic Acquisitions ...