演算法與資結:鏈結串列(Linked List)
使用鏈結串列資料結構的code:
https://github.com/lucreciaLin/AlgorithmDataStructure/blob/master/linkedList.c
下圖為進git & 編譯結果:
https://github.com/lucreciaLin/AlgorithmDataStructure/blob/master/linkedList.c
下圖為進git & 編譯結果:
觀念整理:
1. 指標觀念盤點:
- 「&」:取地址符號。
e.g.
int a = 10;
int *ptr;
ptr = &a;
- C語言裡「*」的3種用途:
(1) 乘號。 e. g. 1 * 2
(2) 定義、宣告指標。e.g. int *ptr;
(3) 為「間接運算子」,也就是取得指標變數的值。e.g. printf("%d", *ptr);
- 「->」:結構體指標運算子。用於當指標要存取其結構體內部成員時使用。
e.g.
struct node *ptr;
...
ptr->data = 10;
ptr->next = NULL;
2. 動態取得記憶體空間:
- malloc():
(1) 從記憶體中申請分配指定位元組大小的記憶體空間。
(2)C和C++裡,為return「void *型別」。也就是可強制轉型為任何型別的指標。
- free():搭配malloc()釋放記憶體空間使用。
最後是為了malloc()和free()查的相關參考來源:
(原創) 簡單的Linked List實現 (C/C++) (C) (Data Structure)
C Programming: malloc and free within a loop
malloc()、free()、calloc() 與 realloc()
留言
張貼留言