zoukankan      html  css  js  c++  java
  • 堆栈

     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();

            }

        }

    }

    堆:先进先出

    栈:先进后出

  • 相关阅读:
    有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
    C编程实现2的1000次方(使程序中的n=1000即可)
    有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数。
    有一个字符串,内有若干字符,输入一个字符,要求程序将字符串中该字符删去。
    使用静态变量的方法求n!
    数组排序:冒泡法和选择法
    使用函数的递归调用来解决Hanoi(汉诺)塔问题。
    VC5509的通用GEL代码
    字、字节和位的关系
    安装JDK后环境变量的配置
  • 原文地址:https://www.cnblogs.com/Yida-Tingting/p/4389431.html
Copyright © 2011-2022 走看看