為什麼要單獨把鍊錶放出來呢?因為不同於棧和佇列的基於陣列實現,鍊錶是通過儲存在每個物件(這裡我們用結構體)裡面的指標來形成順序結構的,這也就意味著它是不支援隨機訪問的(隨機訪問是指在常量的時間內訪問任何乙個元素)。
但肯定有它的優勢:從煉表裡刪除(listdelete)或插入(listinsert)任何位置的元素的時間將是常量。
下面**通過結構體來實現鍊錶以及刪除(listdelete)或插入(listinsert)。
ps:當然不管什麼樣的資料結構都應該能實現很多操作,比如排序,查詢,刪除,插入,複製等等,對於現階段的我來說掌握核心部分是最重要的,因為我們往往不關心底層是怎樣實現的,而是如何用以及什麼時候該用什麼結構。
#includestruct listnode ;//結構體裡面包含所要儲存的資料本身和指向下個節點的指標。
void listinsert(listnode* l, listnode* x) //將x插入到鍊錶l的頭部。
void listdelete(listnode* l, int x)
l = l->next;
}}//將元素x從煉表裡刪除。while迴圈是為了找到x的所在位置,額外建立指標l是
//為了不修改l。
資料結構 表之煉表
頭插法建立 尾插法建立 顯示 銷毀 include include using namespace std typedef int elemtype typedef struct lnode linklist void createlinklistf linklist l,elemtype a,in...
資料結構之鍊錶
頭結點 第乙個有效結點之前的那個結點 頭結點並不存有效資料 加頭結點的目的主要是為了方便對鍊錶的操作 頭指標 指向頭結點的指標變數 尾指標 指向尾節點的指標變數 如果希望通過乙個函式對鍊錶進行處理,只需要乙個引數 頭指標 首先要定義乙個單鏈表儲存結構 然後建立乙個空表,即初始化,我寫的這個提前設定好...
資料結構之鍊錶
鍊錶是一種基本的資料結構型別,它由乙個個結點組成。每乙個結點包括乙個資料的儲存和乙個指向下乙個結點的引用。在這個定義中,結點是乙個可能含有任意型別資料的抽象實體,它所包含的指向結點的應用顯示了它在構造鍊錶之中的作用。和遞迴程式一樣,遞迴資料結構的概念一開始也令人費解,但其實它的簡潔性賦予了它巨大的價...