《C語言》單鏈表 記憶體管理

2021-09-02 17:33:56 字數 3161 閱讀 4133

#define safe_memory

#include

"memmanage.h"

#include

#define n 10

void

main()

;for

(int i =

0; i < n; i++

)show

(p_memory)

;//釋放記憶體

free

(p_addr[0]

);free

(p_addr[0]

);free

(p_addr[0]

);free

(p_addr[5]

);free

(p_addr[9]

);show

(p_memory)

;//清空記憶體

clear

(&p_memory)

;show

(p_memory)

;system

("pause");

}

#pragma once 

#ifdef __cplusplus

extern

"c"memoryinfo;

typedef

struct memmanage

memmanage;

memmanage* p_memory;

//初始化節點

void

initnode

(memmanage* p_node)

;//顯示鍊錶狀態

void

show

(memmanage* p_head)

;//新增節點(新增記憶體)

void

(memmanage*

* pp_head, memoryinfo* p_meminfo)

;//查詢節點

memmanage*

findnode

(memmanage* p_head,

void

* p_addr)

;//修改節點

void

modification

(memmanage* p_head,

void

* p_addr, memoryinfo* p_newmem)

;//刪除節點

void

deletenode

(memmanage*

* pp_head, memoryinfo* p_deladdr)

;//分配記憶體

void

*mymalloc

(size_t memsize)

;//擴充套件記憶體

void

*myrecalloc

(void

* p_oldaddr, size_t newsize)

;//釋放記憶體

void

myfree

(void

* p_addr)

;//清空記憶體

void

clear

(memmanage*

* pp_head)

;#ifdef __cplusplus

}#endif

#include

"memmanage.h"

//初始化節點

void

initnode

(memmanage* p_node)

}//顯示鍊錶狀態

void

show

(memmanage* p_head)

else

}//新增節點(新增記憶體)

void

(memmanage*

* pp_head, memoryinfo* p_meminfo)

else

p_bak->p_next = p_new;}}

//查詢節點

memmanage*

findnode

(memmanage* p_head,

void

* p_addr)

else

p_head = p_head->p_next;}}

return

null;}

//修改節點(擴充套件記憶體)

void

modification

(memmanage* p_head,

void

* p_addr, memoryinfo* p_newmem)}}

//刪除節點(釋放記憶體)

void

deletenode

(memmanage*

* pp_head, memoryinfo* p_deladdr)

else

free

(p_res->p_meminfo->p_memaddr)

; p_res->p_meminfo->p_memaddr =

null

; p_bak->p_next = p_res->p_next;

free

(p_res)

; p_res =

null;}

}}}//分配記憶體

void

*mymalloc

(size_t memsize)

//擴充套件記憶體

void

*myrecalloc

(void

* p_oldaddr, size_t newsize)

//釋放記憶體

void

myfree

(void

* p_addr)

}//清空記憶體

void

clear

(memmanage*

* pp_head)

elseif(

null==(

*pp_head)

->p_next)

else

free

(*pp_head)

;*pp_head =

null;}

puts

("**********====記憶體已清空**********====");

}

C語言單鏈表

include include include define error 0 typedef struct lnode lnode,linklist linklist initlist linklist l node next null l node return l int listlength ...

c語言 單鏈表

單鏈表,顧名思義是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。鍊錶中的資料是以結點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。我們在這裡使用c語言實現 h 檔案 pragma on...

C語言單鏈表

學過線性表中的順序表的都知道,順序表裡的資料在物理記憶體上是相鄰的,所以當我們在順序表中想要訪問下乙個元素時可以直接去訪問,就像陣列一樣。但是單鏈表卻不同,單鏈表的資料儲存的位置是動態分配的,也就是說單鏈表的儲存在物理記憶體上不是相鄰的,所以我們就只能通過指標這種方式來把單鏈表串起來,通過指標來訪問...