程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#創建單循環鏈表

C#創建單循環鏈表

編輯:C#入門知識

前幾天的培訓作業,讓我用C#語言來創建一個單循環鏈表,這個以前在講數據結構的時候有學過,不過那時候用的是C,其中用到的是指針,而在C#裡面沒有了指針,那在C#裡面要怎麼創建一個單循環鏈表呢?其實在創建一個新的對象的時候,我們就可以把他理解為一個指針,C#中並不是說不能用指針,而是將他封裝了起來,對用戶是不可見的,接下來就是我用C#實現的單循環鏈表。
     首先當然是定義一個結構體,在C#裡面那就是一個類,代碼如下:
     class CircleSingleNode<T>
    {
        public T Data;
        public CircleSingleNode<T> nodeNext;

        public CircleSingleNode() { }
        public CircleSingleNode(T data) { Data = data; }
    }
    順便說一下我們經理讓我用泛型來寫,畢竟要盡量把學過的東西運用起來。
    定義好了一個結構體以後,就要定義一個添加節點的方法了,單循環鏈表的話只有一個後節點,沒有前節點,然後最後一個節點的後節點是指向第一個節點,這樣就形成了一個循環。我這裡是定義了一個頭結點來存放第一個節點,代碼如下:
    class CircleSingleTable<T>
    {
        public int count { get; set; }
        CircleSingleNode<T> header;
        CircleSingleNode<T> current;
        public CircleSingleTable(T data)
        {
            header = new CircleSingleNode<T>(data);
            current = header;
        }

        public void AddLastNode(T data)
        {
            CircleSingleNode<T> newNode = new CircleSingleNode<T>(data);
            current.nodeNext = newNode;
            newNode.nodeNext = header;
            current = newNode;
            count++;
        }

        public void showMessage(int count)
        {
            for (int i = 0; i < count;i++ )
            {
                header = header.nodeNext;
                Console.WriteLine(header.Data.ToString());
            }
        }
    }
     但是這樣寫了以後,會出現一個小錯誤,就是比如我循環添加0-9這10個數到鏈表中,然後打印出來的結果是0012345678900123456789....這樣子的 我感覺是在賦值第一個節點的nodeNext時沒賦值好,使得他這個頭結點的下一個節點指向還是這個頭結點的值 然後才指向1 2 3... 不知道這個問題該怎麼解決 看文章的大神們給些意見吧 謝謝了...

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved