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