zoukankan      html  css  js  c++  java
  • 9,数组实现泛型栈

    栈的用途比较广 

    如:子进程调用,递归调用,表达式转换,二叉树遍历,深度优先搜索 等等

    实现思路:

    1)top=-1时栈为空,top=maxsize-1栈满

    C#代码实现:

     1 using System;
     2 
     3 namespace 数据结构
     4 {
     5     public class ArrayStack<T>
     6     {
     7         //栈最大值
     8         private int MaxSize { get; set; }
     9         private T[] Item { get; set; }
    10         //指向栈顶,当栈为空是初始化为-1
    11         private int Top { get; set; } = -1;
    12         //栈是否为空
    13         public bool IsEmpt { get => Top == -1; }
    14         //栈是否满了
    15         public bool IsFull { get => Top == MaxSize - 1; }
    16         public ArrayStack(int maxSize)
    17         {
    18             this.MaxSize = maxSize;
    19             this.Item = new T[maxSize];
    20         }
    21         
    22         //入栈
    23         public void Push(T item)
    24         {
    25             if (IsFull)
    26             {
    27                 Console.WriteLine("栈满了哦");
    28                 return;
    29             }
    30             Top++;
    31             Item[Top] = item;
    32         }
    33 
    34         //出栈
    35         public T Pop()
    36         {
    37             if (IsEmpt)
    38             {
    39                 Console.WriteLine("栈空了哦");
    40                 return default;
    41             }
    42             var item = Item[Top];
    43             Top--;
    44             return item;
    45         }
    46 
    47         //偷看栈顶
    48         public T Peek()
    49         {
    50             if (IsEmpt)
    51             {
    52                 Console.WriteLine("栈空了哦");
    53                 return default;
    54             }
    55             return Item[Top];
    56         }
    57     }
    58     public class ArrayStackDemo
    59     {
    60         public static void Main(string[] args)
    61         {
    62             var stack = new ArrayStack<string>(10);
    63             Console.WriteLine("张三,李四,王五 入栈了");
    64             stack.Push("张三");
    65             stack.Push("李四");
    66             stack.Push("王五");
    67 
    68             Console.WriteLine("王五,李四,张三 出栈了");
    69             Console.WriteLine($"看谁在栈顶?{stack.Peek()}");
    70             stack.Pop();
    71             Console.WriteLine($"看谁在栈顶?{stack.Peek()}");
    72             stack.Pop();
    73             Console.WriteLine($"看谁在栈顶?{stack.Peek()}");
    74             stack.Pop();
    75             stack.Pop();
    76         }
    77     }
    78 }
  • 相关阅读:
    文件映射mmap
    ubuntu查看内存占用和查看cpu使用情况的简单方法(ubuntu内存管理)
    电子类网站
    一个很不错的适合PHPER们书单,推荐给大家【转】
    图片(img标签)的onerror事件
    HTTP 头部解释
    php数据通信方式
    PHP 获取服务器详细信息【转】
    mysql数据库回滚
    微信公共平台php用$GLOBALS["HTTP_RAW_POST_DATA"]收不到信息解决方法
  • 原文地址:https://www.cnblogs.com/xiaojvhuang/p/12709983.html
Copyright © 2011-2022 走看看