前幾天的培訓作業,讓我用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... 不知道這個問題該怎麼解決 看文章的大神們給些意見吧 謝謝了...