<rp id="wnpn7"><ruby id="wnpn7"></ruby></rp>
<progress id="wnpn7"><track id="wnpn7"><rt id="wnpn7"></rt></track></progress>
<ruby id="wnpn7"></ruby>
<ruby id="wnpn7"><blockquote id="wnpn7"><div id="wnpn7"></div></blockquote></ruby>

    1. <em id="wnpn7"><ruby id="wnpn7"><input id="wnpn7"></input></ruby></em>
      1. <button id="wnpn7"><acronym id="wnpn7"></acronym></button><button id="wnpn7"><acronym id="wnpn7"></acronym></button>

        <rp id="wnpn7"><acronym id="wnpn7"></acronym></rp>

        <li id="wnpn7"><object id="wnpn7"><u id="wnpn7"></u></object></li>
        VB.net 2010 視頻教程 VB.net 2010 視頻教程 python基礎視頻教程
        SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
        當前位置:
        首頁 > 編程開發 > c#教程 >
        • C#教程之實現 數據結構 鏈隊列

        本站最新發布   C#從入門到精通
        試聽地址  
        http://www.squ68.com/eschool/CSharpxin3721/

        namespace _003_隊列
        {
        interface IQueueDS
        {
        int Count// count屬性
        {
        get;
        }

        int GetLength();//取得隊長度

        void Enqueue(T item);//入隊

        T Dequeue();//出隊

        T Peek();//取值

        void Clear();//清空

        bool IsEmpty();//判斷隊是否為空
        }
        }



        namespace _003_隊列
        {
        class Node<T>
        {
        private T data; //節點的值
        private Node<T> next; //節點的引用

        public Node(T data) //構造
        {
        this.data = data;
        Next = null;
        }

        public T Data //節點的值的屬性
        {
        get { return data; }
        set { data = value; }
        }

        public Node<T> Next //節點的引用的屬性
        {
        get{ return next; }
        set{ next = value; }
        }
        }
        }



        namespace _003_隊列
        {
        class LinkQueue:IQueueDS
        {
        private Node front; //頭節點
        private Node rear; //尾節點
        private int count; //記錄隊列中數據個數

        public LinkQueue() //構造
        {
        front = null;
        rear = null;
        count = 0;
        }

        public int Count { get { return count; } } //屬性

        public int GetLength() //取得隊列數據個數方法
        {
        return count; 
        }

        public void Enqueue(T item) //入隊 
        {
        Node newNode = new Node(item); 

        if (count == 0) //空隊時入隊,首尾節點都指向新節點

        front = newNode;
        rear = newNode;
        count = 1;
        }
        else //非空隊入隊,首節點無需操作,尾節點指向新節點
        {
        rear.Next = newNode;
        rear = newNode;
        count++;
        }
        }

        public T Dequeue() //出隊
        {
        T temp = front.Data; //temp 存頭節點值
        if (count == 0) //空隊無法出隊
        {
        Console.WriteLine("空隊無法出隊!!!!!"); 
        return default(T);
        }
        else if (count == 1) //隊列僅有的一個數據時,出隊后,首尾節點都置空(null)
        {
        front = rear = null;
        count = 0;
        return temp;
        }
        else //隊列有一個以上數據時,出隊后,頭節點指向下一個節點
        {
        front = front.Next;
        count--;
        return temp;
        }
        }

        public T Peek() //取得頭節點值得方法
        {
        if (front != null) //非空隊時直接返回頭節點值
        {
        return front.Data;
        }
        else //空隊時返回該類型默認值
        {
        Console.WriteLine("空隊無法Peek!!!!!!!!");
        return default(T);
        }
        }

        public void Clear() //清空
        {
        count = 0;
        front = rear = null;
        }

        public bool IsEmpty() //判斷是否為空
        {
        return count == 0;
        }
        }
        }





        namespace _003_隊列
        {
        class Program
        {
        static void Main(string[] args)
        {
        //Queue testQueue = new Queue(); //1.使用BCL中的隊

        //SeqQueue testQueue = new SeqQueue(); //2.使用自己編寫的順序隊

        LinkQueue testQueue = new LinkQueue(); //3.使用自己編寫的鏈隊

        Console.WriteLine(testQueue.IsEmpty());//true
        testQueue.Enqueue(1);
        testQueue.Enqueue(2);
        testQueue.Enqueue(3);

        Console.WriteLine("1,2,3,入隊后,隊中數據個數是" + testQueue.Count);//3
        Console.WriteLine(testQueue.IsEmpty());//false

        int i = testQueue.Dequeue();
        Console.WriteLine(i + "出隊了");//1
        Console.WriteLine("1出隊之后,隊中數據個數是" + testQueue.Count);//2

        int k = testQueue.Dequeue();
        Console.WriteLine(k + "出隊了");//2
        Console.WriteLine("2出隊之后,隊中數據個數是" + testQueue.Count);//1

        int j = testQueue.Peek();
        Console.WriteLine(j + "peek 了");//3
        Console.WriteLine("3peek之后,隊中數據個數是" + testQueue.Count);//1

        testQueue.Clear();
        Console.WriteLine("Clear 之后隊中數據個數是" + testQueue.Count);//0

        Console.ReadKey();
        相關教程
                
        免费看成年人视频大全_免费看成年人视频在线观看