單向鏈表是一種簡單的線型存儲結構,其特點是只能從一個前驅節點找到一個后繼節點,沒有后繼節點的節點稱為頭節點,沒有后繼的節點稱為尾節點。示例如下圖:
從上圖來看鏈表是存在邏輯關系,但在物理內存中它們的存儲是沒有前后關系,而是分布在不同的位置。如果前節點需要找到后繼節點,那么前節點就需要從本節點中找到后斷節點的地址,也就是說每個鏈表節點必須存儲下個節點的引用。鏈表在插入的時候可以達到O⑴的復雜度,比另一種線性表:順序表快得多,但是查找一個節點或者訪問特定編號的節點則需要O(n)的時間,而順序表相應的時間復雜度分別是O(logn)和O⑴。使用鏈表結構可以克服數組鏈表需要預先知道數據大小的缺點,鏈表結構可以充分利用計算機內存空間,實現靈活的內存動態管理。但是鏈表失去了數組隨機讀取的優點,同時鏈表由于增加了結點的指針域,空間開銷比較大。
創建單向鏈表的算法代碼如下:
1. 鏈表節點類:
2. 鏈表頭節點引用、當前節點引用:
3. 鏈表創建法算:
4. 打印鏈表:
完整源代碼如下:
using System; using System.Text;
namespace LB
{
class Program
{
static void Main(string[] args){
Node head = null;
Node now = null;
do{
Node temp = new Node();
Console.Write("請輸入數據:");
temp.data = Console.ReadLine();
if (head != null){
now.next = temp;
now = now.next;
}
else
{
head = temp;
now = head;
}
Console.Write("輸入n退出循環:");
} while (Console.ReadLine() != "n");
Node tmp = head;
while (tmp != null)
{
Console.WriteLine(tmp.data);
tmp = tmp.next;
}
}
}
class Node
{
public object data;
public Node next;
}
}
【北大青鳥深圳嘉華】