• 堆栈


     using System;

    namespace Stack {    

        public class Stack    

    {         // 节点类

            class Node

            {             // 节点有两个属性:自己、指向下一个节点

                    public Node Next;

                    public object Value;

                    public Node(object value) : this(value, null) { }

                    public Node(object value, Node next)            

            {                

              Next = next;

                         Value = value;

                    }

            }

            // first: 栈最上面一个节点

            private Node first = null;

            // count: 栈中节点的数量

            private int count = 0;

            // 判空属性,提供get访问器

            public bool Empty         {

                get             {

                    return (first == null);

                }

            }

            // 计数属性,提供get访问器

            public int Count  {            

         get             {

                    return count;

                }

            }

            // 压栈操作,注意返回object

            public object Pop()         {

                if (first == null)             {

                    throw new InvalidOperationException("Cant pop from an empty stack"); //无效操作异常

                }             else             {

                    object temp = first.Value;

                    first = first.Next;

                    count--;

                    return temp;

                }

            }

            // 弹栈操作,返回空

            public void Push(object o)         {  

               first = new Node(o, first);

                count++;        

      }

    }

        class StackApp     {

            static void Main()         {

                Stack s = new Stack();

                if (s.Empty)

                    Console.WriteLine("堆栈为空");

                else

                    Console.WriteLine("堆栈非空");

                // 往栈中压入5个节点

                for (int i = 0; i < 5; i++)

                    s.Push(i);

                  Console.WriteLine("往堆栈中压入了{0}个元素", s.Count);

                  // 把栈中节点全部弹出来

                 for (int i = 0; i < 5; i++)

                      Console.WriteLine("弹出了第{0}个元素,还剩{1}个元素。", (int)s.Pop() + 1, s.Count);

                         s = null;

                        Console.ReadLine();

            }

        }

    }

    堆:先进先出

    栈:先进后出

  • 相关阅读:
    恢复误删的进程在使用的文件【转】
    高效获得Linux函数调用栈/backtrace的方法【转】
    V4L2开发要点【转】
    Linux中Grep常用的15个例子【转】
    1.Linux电源管理-休眠与唤醒【转】
    3.2. 使​​​​​​​用​​​​​​​ CPUFREQ 调​​​​​​​节​​​​​​​器​​​​​​​【转】
    Linux动态调频系统CPUFreq之一:概述【转】
    android Gui系统之SurfaceFlinger(1)---SurfaceFlinger概论【转】
    非常好的一篇对linux信号(signal)的解析 (转载)【转】
    Linux信号-信号集&信号屏蔽字&捕捉信号【转】
  • 原文地址:https://www.cnblogs.com/Yida-Tingting/p/4389431.html
Copyright © 2020-2023  润新知