我的位置: 首頁 > 學習專區 > 安卓技術 > 單向鏈表

單向鏈表

2013-03-01 15:59:06
來源:
[導讀] 單向鏈表是一種簡單的線型存儲結構,其特點是只能從一個前驅節點找到一個后繼節點,沒有后繼節點的節點稱為頭節點,沒有后繼的節點稱為尾節

單向鏈表是一種簡單的線型存儲結構,其特點是只能從一個前驅節點找到一個后繼節點,沒有后繼節點的節點稱為頭節點,沒有后繼的節點稱為尾節點。示例如下圖:

從上圖來看鏈表是存在邏輯關系,但在物理內存中它們的存儲是沒有前后關系,而是分布在不同的位置。如果前節點需要找到后繼節點,那么前節點就需要從本節點中找到后斷節點的地址,也就是說每個鏈表節點必須存儲下個節點的引用。鏈表在插入的時候可以達到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;
    }

}

【北大青鳥深圳嘉華】

評論
熱點專題
>>
相關文章推薦
>>
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
亚洲国产精品线久久 | 亚洲日韩中文字幕一级乱码在线播放 | 一本色道久久综合亚洲精品小说 | 日本免费一区二区三区中文字幕 | 亚洲欧美人成视频一区在线 | 中文字幕精品一区二区精品 |