用C語言實現無頭單鏈表學習心得

2021-09-27 02:42:28 字數 1672 閱讀 2121

首先講第一種無頭單頭不迴圈的單鏈表

是通過指向單鏈表頭結點的結構題指標來維護的

//定義單鏈表結點

typedef

struct slistnode

slistnode;

typedef

struct slistnode* slist;

//控制單鏈表的方法(介面)

void

slistinit

(slist* head)

;//slist 就是struct slistnode**,二級指標

void

slistdestory

(slist* head)

;void

slistshow

(const slist* head)

;…………

主函式

int

main()

再講第二種無頭單向不迴圈的單鏈表

也是通過指向單鏈表頭結點的結構題指標來維護的,只不過區別是將head指標再裝到乙個結構體中,呼叫單鏈表的方法時,便可以傳這個裝了head指標的結構體的位址,並用指向裝head指標的結構體的指標去接收,這樣就巧妙的避開二級指標使用不熟練的硬傷以及會出現的各種指標危險,也不會糾結改變鍊錶結構的傳址,不該變鍊錶結構的傳值

(其實不該變實參的形參設定有兩種方法:如下)

不該變實參的形參設定有兩種方法

(1)傳值 形參用與實參相同的型別接收

(2)傳址 形參用const 的指標來接收(注意const位於*前的兩種情況)

注意:const的使用

const 修飾指標型別可以出現在三個位置分兩種情況(前和後)

例:void

* b;

const

void

* b;

//在指標指向的型別名前

void

const

* b;

//在*前面

void

*const b;

//在變數名前

const 在*前(前兩種位置),指標指向的記憶體無法被修改

const 在*後(最後一種位置情況),指標的指向無法被修改

第二種無頭單向不迴圈的單鏈表如下:

//定義單鏈表結點

typedef

struct slistnode

slistnode;

//定義裝了head指標的結構體

typedef

struct slist

slist;

typedef

struct slist* head;

//控制單鏈表的方法(介面)

void

slistinit

(head* head)

;//slist 就是struct slistnode**,二級指標

void

slistdestory

(head* head)

;void

slistshow

(const head* head)

;…………

intmain()

C語言實現無頭節點的單鏈表

測試 singlelinkedlist.h標頭檔案 ifndef singlelinkedlist h include include include typedef int datatype typedef struct listnode listnode listnode initlist da...

用c語言實現單鏈表

用c語言實現單鏈表 node.h pragma once typedef int datatype typedef struct node node node buynode datatype x 增容 void printlist node phead 列印 void pushback node ...

用C語言實現單鏈表

最近在重新學資料結構,所以把每次寫完的 記錄一些!include include define error 0 define ok 1 構造節點 typedef struct node node 初始化鍊錶 n 初始化的長度 node init head int n node head node m...