我對單向鍊錶的學習

2021-07-05 05:48:55 字數 3233 閱讀 5444

本文章主要是記述我對單向鍊錶的理解:1.有頭節點和無頭結點鍊錶的理解 2.有頭結點鍊錶的建立 ,顯示,插入,刪除,氣泡排序,逆置。

我對鍊錶的理解就是將乙個個結構體串聯起來。乙個個結構體在乙個鍊錶中就是乙個節點,節點之間是由結構體指標聯絡起來的,也就是他們結構體中會包含乙個同型別的*next指標,用來指向下乙個節點的位址,這個就是節點的指標域,裡面其他型別的資料就是節點的資料域。 頭結點就是資料域為空(0),指標域是指向乙個有效資料的乙個結構體,它是乙個節點,由malloc跟它分配了記憶體。

下面我用**來分析:

首先建立乙個結構體

typedef struct list

node;

下面就是各個功能函式

1.建立乙個帶頭結點的鍊錶:

node *creat_link_list(int n)

//如此迴圈,直到建立完你需要的結點

p->next=null; //然後將最後乙個資料結點指向null,結束此單向鍊錶

return head;//返回頭結點的位址

2.顯示鍊錶的資料

void printlist(node *head)

}

按照上面的程式,一直列印出各個結點的資訊(除了頭結點的),直到我們的鍊錶結束,null。

3.鍊錶插入結點(這個函式的功能是插在某個結點的後面)

3.鍊錶刪除結點:

void delietelist(node *head,int i)

q=p->next;

p->next=q->next;

free(q);

}

這裡為什麼要找到刪除結點的前乙個位子呢?因為我們刪了這個結點,但是還需要把這個結點的前後連線起來,組成乙個鍊錶,不然這裡就斷了,而且這個鍊錶是單向的。

結點的刪除很簡單,只不過需要注意的是我們必須得把要刪除的結點free掉,不然會造成記憶體洩露

4.鍊錶的氣泡排序(按從小到大)

node * sort(node *head)}}

return head;

}

這個沒什麼說的,思路就是冒泡的思想,實現的時候只需要將資料換乘鍊錶的形式即可。

思路:就是將所有資料進行比較,小的放前面,第一次是所有資料比,最小的放第1個,然後是除了第乙個資料的後面的再比較,最小的放第2個,以此類推。n個資料比較,

最多是比較n(n-1)/2,最少比較0次  ps:10個資料比較,最多就是9+8+7+.....+1,通項公式是前面那個式子。

5.鍊錶的逆置(逆置後我仍然把它做成乙個帶頭結點的鍊錶,所以給建立了乙個新的頭結點new_h,把以前的那個free掉了)

第一次迴圈結束;

接下來繼續迴圈

到最後逆置完所有資料

別忘記了我們還要插入頭結點和將以前的那個頭結點設定為null,這裡有一點我改過的就是我以前將head結點free掉,現在是將其設定為null,如果是前者他們這個鍊錶就沒有null結束了,但是執行結果還是正確的,這裡是我不懂的,反正2種方法最後執行還是可以的。

下面是我的main函式

int main(int argc,char *argv)

else

printf("input data :\n");

scanf("%d",&data);

insertlist(head,i,data,n);

printf("list elements\n");

printlist(head);

printf("input the position of delete elements:\n");

scanf("%d",&i);

delietelist(head,i);

printlist(head);

printf("sort the list\n");

head=sort(head);

printlist(head);

printf("list the reverse list:\n");

head=reverse_list(head);

printlist(head);

return 0;

}

下面是執行結果:

程式比較簡單,應該會有bug,只是為了簡單的學習一點鍊錶。

我對JS鍊錶的簡單學習

要儲存多個元素,陣列可能是最常用的資料結構。這種資料結構非常方便,但是有乙個缺點 從陣列的起點或者中間插入或移除項的成本非常高,因為需要移動元素 比如你插入乙個元素後面的所有的元素都移動了 位置 相比於陣列來說,鍊錶的好處在於新增或者刪除元素的時候不需要移動其他元素。但是操作鍊錶需要使用指標。陣列的...

鍊錶 反轉單向鍊錶

思路 從第二個元素開始。1 刪除當前元素。2 把當前元素放到頭結點位置。其中需要宣告3個變數 headnode 頭結點 prenode 前乙個結點 currentnode 當前結點 具體步驟如圖所示 實現 反轉單鏈表方法實現類 created by liujinjin on 17 1 19.publ...

鍊錶1 單向鍊錶

鍊錶中最簡單的一種是單向鍊錶,它包含兩個域,乙個資料域和乙個指標域,指標域指向鍊錶中的下乙個節點,最後乙個節點的指標域指向乙個空值 鍊錶最基本的結構是在每個節點儲存資料和到下乙個節點的位址,在最後乙個節點儲存乙個特殊的結束標記,另外在乙個固定的位置儲存指向第乙個節點的指標,有的時候也會同時儲存指向最...