zoukankan      html  css  js  c++  java
  • c#队列的实现

    c#队列的实现

    /*
         用一片连续的存储空间来存储队列中的数据元素,这样的队列称为顺序队列
        (Sequence Queue)。类似于顺序栈,在这里我就不做介绍了,我们直接用列表实现一个队列
         */

    复制代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 数据结构Linked_List
    {
        public class LinkQueue<T>
        {
            private Node<T> front;//队列头指示器
    
            internal Node<T> Front
            {
                get { return front; }
                set { front = value; }
            }
            private Node<T> rear;//队列尾指示器
    
            internal Node<T> Rear
            {
                get { return rear; }
                set { rear = value; }
            }
            private int nCount;//队列结点个数
    
            public int NCount
            {
                get { return nCount; }
                set { nCount = value; }
            }
            public LinkQueue()
            {
                front = rear = null;
                nCount = 0;
            }
            public int GetLength()
            {
                return nCount;
            }
    
            public void Clear()
            {
                front = rear = null;
                nCount = 0;
            }
    
            public bool IsEmpty()
            {
                if ( front == rear && 0 == nCount )
                {
                    return true;
                }
                return false;
            }
    
            public void Enqueue( T item )
            {
                Node<T> p = new Node<T>(item);
                if ( IsEmpty() )
                {
                    front = rear = p;// 这步很重要 当第一个元素入队的时候,必须给front赋值,否则front一直都是null
                }
                else
                {
                    rear.Next = p;
                    rear = p;
                }
                ++nCount;
            }
    
            public T Dqueue()
            {
                if ( IsEmpty() )
                {
                    Console.WriteLine("队列为空");
                    return default(T);
                }
                Node<T> p = front;//从队列头出对
                front = front.Next;
                if ( front == null )
                {
                    rear = null;
                }
                --nCount;
                return p.Data;
            }
            //获取链队列头结点的值
            public T GetFront()
            {
                if (IsEmpty())
                {
                    Console.WriteLine("队列为空");
                    return default(T);
                }
                return front.Data;
            }
        }
    }

    复制代码

    /*
            队列的应用举例 
            编程判断一个字符串是否是回文。回文是指一个字符序列以中间字符
            为基准两边字符完全相同,如字符序列“ACBDEDBCA”是回文
            */

    复制代码

    public static bool IsPalindromic()
            {
                SeqStack<char> stack = new SeqStack<char>(50);
                LinkQueue<char> queue = new LinkQueue<char>();
                //string str = Console.ReadLine();// 这里随便输入
                string str = "ACBDEDBCA";// 测试
                for ( int i = 0; i < str.Length; ++i )
                {
                    stack.Push(str[i]);
                    queue.Enqueue(str[i]);
                }
                bool flag = false;
               // 这里只需循环一半元素即可
                for (int i = 0; i < str.Length >> 1; ++i )
                {
                    if (queue.Dqueue() == stack.Pop())
                    {
                        flag = true;
                    }
                    else
                    {
                        flag = false;
                    }
                }
                return flag;
            }

    复制代码

    好了,今天就到这里了

  • 相关阅读:
    hdu 1392 fzu 1333 Surround the Trees 简单凸包
    STL的应用 multiset bitset next_permutation
    hdu 3711 Binary Number 位运算(^ 与&)的应用
    鸽舍原理
    hdu 4002 Find the maximum 2011 大连网络赛 1002 Find the maximum
    组合数学
    Delphi程序破解技术概要
    NET的URL怎么静态化?
    David I谈Delphi的现状及未来发展方向
    使用Dede破解Delphi软件实战
  • 原文地址:https://www.cnblogs.com/grj001/p/12225130.html
Copyright © 2011-2022 走看看