c 學習筆記 單鏈表

2021-10-13 10:08:12 字數 2916 閱讀 1514

總結自己關於鍊錶的一些理解與學習

鍊錶就是鏈結和**的結合,即指標與資料的結合,個人理解就是乙個個首尾相連的方格

如圖所示,就是乙個個小方格,裡面存放著資料與指標,每個小方格由指標相互連線起來,最前面的叫頭指標,最後面的指標為0.

本例使用的是嵌入類來實現鍊錶,當然也有繼承類、復合類、結構體等實現方式。

linklist.h:

#if !defined linklist_h

#define linklist_h

class link

link const

*next()

const

//返回當前物件的指標變數

link *

next()

//多型

void

setnext

(link * next)

//將傳入的指標賦給當前物件的指標變數

intid()

const

//返回當前物件的資料變數

private:

int _id;

//資料域

link * _pnext;

//指標域};

class list

~list()

;void

add(

int id)

;//新增乙個資料

link const

*gethead()

const

//返回當前物件的資料變數

private:

link * _phead;

//link型別的指標};

class listseq

bool atend()

const

void

advance()

intid()

const

private:

link const

* _link;};

class unlinkseq

bool atend()

const

void

advance()

intid()

const

void

unlink()

;private:

list & _list;

link * _cur;

link * _prev;};

#endif

對頭檔案簡單解釋一下,就是分成了四個類:

link:

建立了乙個link物件,它包括指標域與資料域,而且定義的方法能返回自己的指標域與資料域,也能改變自己的指標域。

建立了乙個list物件,它擁有乙個 _phead變數用來指向乙個link物件(相當於指向整個方格),而且定義的方法能返回這個_phead,也能為鍊錶新增新的**。

下圖為鍊錶新增新**(add函式)的過程

重複以上過程就能新增多個方格

listseq:

建立了乙個listseq物件,它的作用是讀取鍊錶中的id,即資料。用for迴圈來使用它的幾個方法,在main函式中有相對應的應用。

unlinkseq

類似listseq,建立了乙個unlinkseq物件,它的作用是歷遍並刪除方格。

linklist.cpp:

#include

"linklist.h"

#include

#include

intmain()

seq.

unlink()

;for

(listseq seq

(list)

;!seq.

atend()

; seq.

advance()

)return0;

}void unlinkseq:

:unlink()

else

delete _cur;

_cur =0;

}void list:

:add

(int id)

list::~

list()

}

1、對於const的理解

指向常量指標不能進行寫操作(int const *p)

常量指標不能移動 (int * p const)

函式後的const表示函式不可以修改class的成員(void function()const )

2、 友元與嵌入

嵌入是物件之間 has a的關係(如list與link的關係)

友元是物件之間has access to的關係(如unlinkseq與list的關係)

3、引用作為引數

引用作為引數會改變引數的實際值,這在一些辨析交換函式swap()能否完成交換經常會提到。

4、構析函式

list::

~list()

}

這個構析函式完全就是建構函式的逆方式,乙個是創造方格,乙個是刪除方格。

void unlinkseq::

unlink()

else

delete _cur;

_cur =0;

}

同理,這個刪除方格的方式也是定位方格的位址,找到就直接delete即

C 學習筆記(六)單鏈表 C風格

鏈式儲存結構 結構 資料域指標域 data next 結點定義 typedef struct lnode lnode,linklist 頭指標 linklist即為頭指標。本身一般不儲存資訊 也可儲存長度等相關資訊 指向第乙個元素結點 頭結點 頭指標 鍊錶必須要頭指標,但是不一定有頭結點 頭結點的好...

(學習筆記 4)單鏈表

鍊錶中第乙個節點的儲存位置,叫做頭指標,最後乙個節點指標為空 null 頭指標與頭結點的異同 頭指標 頭指標是指鍊錶指向第乙個結點的指標,若煉表有頭結點,則是指向頭結點的指標。頭指標具有標識作用,所以常以頭指標冠以鍊錶的名字 指標變數的名字 無論鍊錶是否為空,頭指標均不為空。頭指標是鍊錶的必要元素。...

單鏈表 學習筆記1

首先我們來看一下整體 include define ok 1 using namespace std class infonode infonode createhead int el,infonode l void addtotail int el infonode l r new infonod...