美文网首页
面向对象(三十二)-Stack与Queue

面向对象(三十二)-Stack与Queue

作者: 元宇宙协会 | 来源:发表于2018-04-12 12:47 被阅读29次

    Stack(栈)

    堆栈(Stack)代表了一个后进先出的对象集合。当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素。

    • 方法
      Clear();
      从 Stack 中移除所有的元素。
      bool Contains( object obj );
      判断某个元素是否在 Stack 中。
      object Peek();
      返回在 Stack 的顶部的对象,但不移除它。
      object Pop();
      移除并返回在 Stack 的顶部的对象
      Push( object obj );
      向 Stack 的顶部添加一个对象。
      object[] ToArray();
      复制 Stack 到一个新的数组中
                Stack st = new Stack();
    
                st.Push('A');
                st.Push('M');
                st.Push('G');
                st.Push('W');
                
                Console.WriteLine("Current stack: ");
                foreach (char c in st)
                {
                    Console.Write(c + " ");
                }
                Console.WriteLine();
                
                st.Push('V');
                st.Push('H');
                Console.WriteLine("The next poppable value in stack: {0}", 
                st.Peek());
                Console.WriteLine("Current stack: ");           
                foreach (char c in st)
                {
                   Console.Write(c + " ");
                }
                Console.WriteLine();
    
                Console.WriteLine("Removing values ");
                st.Pop();
                st.Pop();
                st.Pop();
                
                Console.WriteLine("Current stack: ");
                foreach (char c in st)
                {
                   Console.Write(c + " "); 
                }
    
    • 属性
      count : 个数

    Queue(队列)

    队列(Queue)代表了一个先进先出的对象集合。当需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。


    方法
    
    Queue q = new Queue();
    - 添加元素到结尾处
    q.Enqueue("a");
    q.Enqueue("b");
    q.Enqueue("c");
    - 个数
    Console.WriteLine(q.Count);
    - 遍历
      foreach (var item in q)
     {
        Console.WriteLine(item);
    }
    - 转成数组
    object[] objs = q.ToArray();
    - 遍历
     for (int i = 0; i < objs.Length; i++)
    {
          Console.WriteLine(objs[i]);
    }
    - 是否包含元素
    bool b =  q.Contains("b");
    Console.WriteLine(b);
    // 移除开始出的对象
    string obj1 = (string)q.Dequeue();
    Console.WriteLine("移除开始出的对象"+obj1);
    - 清空所有元素
     q.Clear();
    

    相关文章

      网友评论

          本文标题:面向对象(三十二)-Stack与Queue

          本文链接:https://www.haomeiwen.com/subject/seuxkftx.html