演算法與資結:鏈結串列(Linked List)

使用鏈結串列資料結構的code
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()

留言

熱門文章