Net Core教程

51.(c#)堆栈 Stack s = new Stack()

本文主要是介绍51.(c#)堆栈 Stack s = new Stack(),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

// Stack名字空间
namespace Stack
{
  using System;

  public class Stack
  {
    // 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 Node
  {
    // 节点有两个属性:自己、指向下一个节点
    public Node Next;
    public object Value;

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

    public Node(object value, Node next)
    {
      Next = next;
      Value = value;
    }
  }
}

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;
    }
  }
}

 

这篇关于51.(c#)堆栈 Stack s = new Stack()的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!