鏈表在內存中的存儲
A. 閾捐〃鍦ㄥ唴瀛樹腑鐨勫瓨鍌ㄦ柟寮忓埌搴曟槸鎬庢牱鐨勶紵鏁版嵁鍩熻窡鎸囬拡鍩熺殑綾誨瀷鍙堝垎鍒鏄浠涔堬紵
閾懼紡瀛樺偍琛ㄧず鐨勭壒鐐規槸鐢ㄤ竴緇勪換鎰忕殑瀛樺偍鍗曞厓瀛樺偍綰挎ц〃鐨勬暟鎹鍏冪礌錛堣繖緇勫瓨鍌ㄥ崟鍏冨彲浠ユ槸榪炵畫鐨勶紝涔熷彲浠ユ槸涓嶈繛緇鐨勶級銆傚洜姝わ紝涓轟簡琛ㄧず姣忎釜鏁版嵁鍏冪礌 涓庡叾鐩存帴鍚庣戶鏁版嵁鍏冪礌 涔嬮棿鐨勯昏緫鍏崇郴錛屽規暟鎹鍏冪礌 鏉ヨ達紝闄や簡瀛樺偍鍏舵湰韜鐨勪俊鎮涔嬪(鍚勭嶆暟鎹綾誨瀷)錛岃繕闇瀛樺偍涓涓鎸囩ず鍏剁洿鎺ュ悗緇х殑淇℃伅錛堝嵆鐩存帴鍚庣戶鐨勫瓨鍌ㄤ綅緗錛夛紙鎸囬拡綾誨瀷錛夈傜敱榪欎袱閮ㄥ垎淇℃伅緇勬垚涓涓"緇撶偣"錛岃〃紺虹嚎鎬ц〃涓涓涓鏁版嵁鍏冪礌
B. 在C語言中,什麼是鏈表呀
鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。 相比於線性表順序結構,操作復雜。由於不必須按順序存儲,鏈表在插入的時候可以達到O(1)的復雜度,比另一種線性表順序錶快得多,但是查找一個節點或者訪問特定編號的節點則需要O(n)的時間,而線性表和順序表相應的時間復雜度分別是O(logn)和O(1)。
使用鏈表結構可以克服數組鏈表需要預先知道數據大小的缺點,鏈表結構可以充分利用計算機內存空間,實現靈活的內存動態管理。但是鏈表失去了數組隨機讀取的優點,同時鏈表由於增加了結點的指針域,空間開銷比較大。鏈表最明顯的好處就是,常規數組排列關聯項目的方式可能不同於這些數據項目在記憶體或磁碟上順序,數據的存取往往要在不同的排列順序中轉換。鏈表允許插入和移除表上任意位置上的節點,但是不允許隨機存取。鏈表有很多種不同的類型:單向鏈表,雙向鏈表以及循環鏈表。鏈表可以在多種編程語言中實現。像Lisp和Scheme這樣的語言的內建數據類型中就包含了鏈表的存取和操作。程序語言或面向對象語言,如C,C++和Java依靠易變工具來生成鏈表。