C#数据结构篇(二 堆栈) killertang(原作)

C#数据结构篇(二)堆栈

             作者: 寒羽狼 (Dark_Slaer_Tang)

        烟快没有了,别人都说烟有害,但对与我可是必不可少的,呵呵。。,抽一根烟程序就写出来了,好了,再加把劲,我们再完成堆栈,其实堆栈和线性表没什么大的区别,堆栈其实是一种特殊的线性表,使用Push 压输入数据,Pop 弹出数据,才用,先进后出的原则,就这么简单。前面已经写好了List 类,在这里我们可以调用它。代码如下:

using System;

namespace List
{
/// <summary>
/// 堆栈类
/// </summary>

public class CStack
{  

  //调用链表类
  private  Clist m_List;
  

  public CStack()
  {

  //构造函数

   m_List=new Clist();

  }

  /// <summary>
  /// 压入堆栈
  /// </summary>
  
  public void Push(int PushValue)
  {
      //参数: int PushValue 压入堆栈的数据

      m_List.Append (PushValue);
            
  }

  /// <summary>
  /// 弹出堆栈数据,如果为空,则取得 2147483647 为 int 的最大值;
  /// </summary>
  
  public int Pop()
  {
  //功能:弹出堆栈数据

  int PopValue;
   
   if (!IsNullStack())
   {

    //不为空堆栈

    //移动到顶

    MoveTop();

    //取得弹出的数据
    PopValue=GetCurrentValue();

   //删除

    Delete();
    return PopValue;

   }

   //  空的时候为 int 类型的最大值

   return 2147483647;
  }

  /// <summary>
  /// 判断是否为空的堆栈
  /// </summary>
  
  public bool IsNullStack()
  {   
   
   if ( m_List.IsNull() )
   return true ;

   return false ;
  }

  /// <summary>
  /// 堆栈的个数
  /// </summary>

  public int StackListCount
  {   

    
   get
   {
    return m_List.ListCount ;
   }

  }

  /// <summary>
  /// 移动到堆栈的底部
  /// </summary>

  public void MoveBottom()
  {

        m_List.MoveFrist ();
  }

  /// <summary>
  /// 移动到堆栈的Top
  /// </summary>
  
  public void MoveTop()
  {
   m_List.MoveLast  ();
  }

  /// <summary>
  /// 向上移动
  /// </summary>
  
  public void MoveUp()
  {
   m_List.MoveNext();
  }

  /// <summary>
  /// 向上移动
  /// </summary>
  
  public void MoveDown()
  {
   m_List.MovePrevious() ;
  }

  /// <summary>
  /// 取得当前的值
  /// </summary>
  
   public int  GetCurrentValue()
  {
   return m_List.GetCurrentValue ();
  }

  /// <summary>
  /// 删除取得当前的结点
  /// </summary>
  
  public void Delete()
  {
   m_List.Delete ();
  }

  /// <summary>
  /// 清空堆栈
  /// </summary>

public void Clear()

{

     m_List.Clear();

}

}
}

     使用先前的链表类,就可以轻松的完成堆栈类,除了基本的,Pop,Push 方法外,还提供,MoveBottom,MoveTop,MoveUp,MoveDown ,来访问堆栈中的数据,使用GetCurrentValue方法,来取得数据的值,可以执行更多的操作,呵呵,就这么简单。To Be Continue.

时间: 2024-11-03 00:03:57

C#数据结构篇(二 堆栈) killertang(原作)的相关文章

C#数据结构篇(一链表类) killertang(原作)

C#数据结构篇(一)线性表           作者: 寒羽狼 (Dark_Slaer_Tang)             最近,马子跑了,你说女人老是容易翻脸...,看来做程序员必定要 "茕茕孑立,行影相吊"悲惨命运了.还是老老实实编程吧,我发现用c# 编一些数据接结构的类也瞒不错的,于是想把数据结构的算法,用C#重写一遍,打发无聊的时光,下面是数据结构中的链表的实现.        首先定义结点类型,定义了,前一个指针域,后一个指针域,如下: using System; names

网上下载和上传数据(二) Montaque(原作)

网上下载和上传数据(二)    Montaque(原作)    上一次介绍了WebClient的一些下载和上传数据的方法,今天着重看一下WebRequest 和 WebResponse两种我们访问Internet常用的类,严格说,WebRequest是一个抽象基类,我们一般用它的衍生类HttpWebRequest 以及 FileWebRequest,FTP的访问需要手动注册,具体看后面的插入协议. 从逻辑角度上讲,Net classes 包含三个层:请求/响应层.应用协议层和传输层,依次展开,从

以前收集的一些资料---使用ASP加密算法加密你的数据(二)

加密|数据|算法          以前收集的一些资料---使用ASP加密算法加密你的数据(二)Julain Sitkewich在第一部分,讨论了如何生成密钥,下面将介绍如何使用这个密钥来加密和解密一个字符串.下面的代码就是能够同时实现这个功能的函数Crypt.asp文件<% Dim g_Key Const g_CryptThis = "Now is the time for all good men to come to the aid of their country."Co

FileReader读取数据方法(二)

package cn.io; //FileReader读取数据方法(二) //注意: //(1)FileReader的read( )方法,每次只读取单个字符.当读到末尾时返回-1 //(2)关闭流的顺序:后开的先关 //(3)之所以把FileReader fr = null和FileWriter fw = null; // 是因为它们是全局的,若在try里面这么写,那么在finally里就无法识别 //(4)若要输出单个的字符,那么在sys的时候一定要强转,因为返回的是字符对应的数字!!! im

Flash MX本地保存数据的二种方法

数据 谈到计算机操作,往往就不了数据操作,最基本的数据操作就是读取和保存数据.Flash程序很多时候也会用到数据操作,比如说载入外部文件就是读取数据.然而Flash保存数据的能力是很有限的.Flash 5时我们还可以用fscommond来本地保存外部文本文件,到了FlashMX时代,出于对安全因素的考虑,Micromedia取消了这个功能. 那是不是我们就无法用Flash MX保存数据了呢?回答是否定的,这里我就系统给大家介绍用Flash MX本地保存外部数据的三种方法. 方法一:使用MMsav

【玩转数据系列二】机器学习应用没那么难,这次教你玩心脏病预测

产品地址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2 一.背景 心脏病是人类健康的头号杀手.全世界1/3的人口死亡是因心脏病引起的,而我国,每年有几十万人死于心脏病. 所以,如果可以通过提取人体相关的体侧指标,通过数据挖掘的方式来分析不同特征对于心脏病的影响,对于预测和预防心脏病将起到至关重要的作用.本文将会通过真实的数据,通过阿里云机器学习平台搭建心脏病预测案例. 二.数据集介绍 数据源: UC

c# 三维数据取二维数据问题

问题描述 int[,,]data={{{0,0,0,0},{0,0,1,1},{0,1,0,0},{0,0,0,0},},{{0,1,0,0},{0,1,0,0},{0,0,0,0},{1,0,0,0},},};voidCopyData(int[,]desc,int[,]src){for(inti=0;i<src.GetLength(0);i++){for(intj=0;j<src.GetLength(1);j++){desc[i,j]=src[i,j];}}}int[,]=newint[4,

oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)_oracle

方法一:利用PL/SQL Developer工具导出:菜单栏---->Tools---->Export Tables,如下图,设置相关参数即可: 方法二:利用cmd的操作命令导出,详情如下:1:G:\Oracle\product\10.1.0\Client_1\NETWORK\ADMIN目录下有个tnsname.ora文件,内容如下: 复制代码 代码如下: CMSTAR =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL

怎么将数据库中数据存入二维数组?

问题描述 数据表为test,有四列test1,test2,test3,test3.怎样将它们的数据调出存入一个二维数据,然后进行矩阵的运算.附上范例代码的,优先给分. 解决方案 解决方案二:先读到DataTable,再赋给二维数组.解决方案三:用楼上的方法解决方案四:个人认为,与其将数据库数据读入多维数组,不如新建一个对象,将其读入对象,更加直观.而且不受类型的限制.解决方案五:DataTableda=newDataTable();//这句自己写获得数据List<List<string>