鍊錶基礎 c

2021-09-17 04:22:32 字數 1548 閱讀 1094

鍊錶有動態和靜態兩種

1.動態

動態鍊錶可以帶頭結點(head)也可以不帶,動態的寫法要先申請空間

申請空間有2種寫法

1)malloc 標頭檔案stdlib.h

int* p=(int*)malloc(sizeof(int));

node* p=(node*)malloc(sizeof(node))`

因為malloc返回的是指標型別,所以還要強制轉換

2)new運算子

int* p=new int;

node* p=new node;

new運算子和malloc都可以申請空間,但是也有申請失敗的時候,當你申請空間過大的時候就會失敗,失敗的時候會返回null,

記憶體洩漏

記憶體洩漏指的是new或malloc後的空間沒有釋放,就會一直佔著記憶體,在大的程式中就有可能沒有空間分配,所以申請完空間後可以釋放

malloc ---- free   free(p)

new ----delete delete(p)

這兩個是成對出現的,```

free和delete主要實現的是釋放申請的空間,指標本身依然存在

2.鍊錶的基本操作

建立,查詢,插入,刪除

#include#includeusing namespace std;

struct node;

node* create(int a)

return head;

}int search(node* head , int x)

return count;

}void insert(node* head , int pos ,int x)

node* q= new node;

q->date =x;

q->next = p->next ;

p->next = q;

}void del(node* head , int x)

else }}

int main();

node* l=create(a);

// l = l->next;

// while(l !=null)

// coutwhile(l !=null)

return 0;

}

我覺得主要的幾個地方

1.第一次使用指標要分配空間,malloc後者new,一般頭節點要這樣

2.頭結點要注意封尾,就是建立完head節點,還要注意head->next=null

3.注意邏輯關係,位置,是鍊錶的基礎

2.靜態

我看pat經常用的是靜態

靜態鍊錶的原理值hash,通過建立結構體陣列,令陣列下標直接表示節點的位址,靜態鍊錶不需要頭結點

struct node node[size];
靜態鍊錶基礎是這樣的,在後面做題的時候在詳細的寫下

C鍊錶基礎

include struct node 建立煉表頭結點 struct node create list head void head next null printf head created ok.n return head 頭部插入鍊錶結點 int insert list head struct...

C語言基礎 鍊錶

參考清華大學軟體學院 諶衛軍 c語言程式設計 課件 1 鍊錶 1.1 鍊錶的基本概念 定義如下的結構體型別 struct train tag 2 對鍊錶的操作 2.1 建立動態鍊錶 例 建立乙個鍊錶,並輸入每乙個結點的各種描述資訊 貨櫃編號 貨物名稱 貨物重量 發貨地點 到貨時間等 直到使用者輸入的...

C 實現鍊錶基礎功能

include include include include define ok 1 define error 0 define true 1 define false 0 using namespace std typedef int elmetype typedef int status 鍊錶...