本文章主要是記述我對單向鍊錶的理解: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 單向鍊錶
鍊錶中最簡單的一種是單向鍊錶,它包含兩個域,乙個資料域和乙個指標域,指標域指向鍊錶中的下乙個節點,最後乙個節點的指標域指向乙個空值 鍊錶最基本的結構是在每個節點儲存資料和到下乙個節點的位址,在最後乙個節點儲存乙個特殊的結束標記,另外在乙個固定的位置儲存指向第乙個節點的指標,有的時候也會同時儲存指向最...