C 資料結構 單鏈表 雙鏈表與迴圈鍊錶

2021-09-12 15:47:30 字數 3660 閱讀 7887

注意:以下所有鍊錶均包含空的頭結點。

#include

"stdafx.h"

#include

using

namespace std;

//節點類

class

node

//乙個引數的建構函式

node

(node * nextvalue)};

//單鏈錶類

class

singlelinkedlist

node *p =

newnode

(head-

>next)

;while

(p !=

null

&& count < i)

return p;

}public

:singlelinkedlist()

~singlelinkedlist()

}//判斷鍊錶是否為空

bool

isempty()

//將鍊錶內容清除

void

clear()

head = tail =

newnode

(null);

}//返回當前鍊錶長度

intlength()

return count;

}//在表尾新增一元素

bool

(const

int value)

//在位置i上插入乙個元素value

bool

insert

(const

int i,

const

int value)

q =newnode

(value, p-

>next)

;//q是待插入元素

p->next = q;

if(p == tail)

//插入點在鏈尾

tail = q;

return

true;}

//在位置i上刪除該元素

bool

drop

(const

int i)

q = p-

>next;

//q是待刪除元素

if(q == tail)

else

if(q !=

null)}

//通過value返回位置p的元素值

bool

getvalue

(const

int p,

int& value)

node *q = head;

for(

int i =

0; i < p; i++

) value = q-

>data;

return

true;}

//查詢值為value的元素並通過p返回其第一次出現時的位置

bool

getpos

(int

&p,const

int value)

}return

false;}

};

int

main()

empty linked list.

length: 1

value: 0

value: 1

value: 2

value: 3

linked list is not empty.

length: 4

positon: 2

value: 4

這部分**相較於1.1節的內容修改不大,主要變化體現在insert()drop()方法內部以及類doublelinkedlist中函式的形參變化上。

測試用例和輸出結果同1.2和1.3節,故省略。

#include

"stdafx.h"

#include

using

namespace std;

//節點類

class

node

//包含前後指標兩個引數的建構函式

node

(node * prevalue, node * nextvalue)};

//雙鏈錶類

class

doublelinkedlist

node *p =

newnode

(head, head-

>next)

;while

(p !=

null

&& count < i)

return p;

}public

:doublelinkedlist()

~doublelinkedlist()

}//判斷鍊錶是否為空

bool

isempty()

//將鍊錶內容清除

void

clear()

head = tail =

newnode

(null

,null);

}//返回當前鍊錶長度

intlength()

return count;

}//在表尾新增一元素

bool

(const

int value)

//在位置i上插入乙個元素value

bool

insert

(const

int i,

const

int value)

q =newnode

(value, p, p-

>next)

;//q是待插入元素

q->prev = p;

q->next = p-

>next;

p->next = q;

q->prev-

>next = q;

if(p == tail)

//插入點在鏈尾

q = tail;

return

true;}

//在位置i上刪除該元素

bool

drop

(const

int i)

if(p == tail)

else

if(p !=

null)}

//通過value返回位置p的元素值

bool

getvalue

(const

int p,

int& value)

node *q = head;

for(

int i =

0; i < p; i++

) value = q-

>data;

return

true;}

//查詢值為value的元素並通過p返回其第一次出現時的位置

bool

getpos

(int

&p,const

int value)

}return

false;}

};

資料結構 單鏈表,迴圈鍊錶,雙項鍊表的實現

單鏈表 單鏈表是一種鏈式訪問的資料結構,用一組位址任意的 儲存單元 存放線性表中的 資料元素 鍊錶中的資料是以結點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。每個結點只有乙個鏈域的鍊錶稱為單鏈表 single...

資料結構與演算法篇 之迴圈單鏈表與雙鏈表

鍊錶的基礎操作,增刪查插 感覺最重要的畫出來,一步一步的分析,不要憑空想象,不要憑空想象,不要憑空想象 迴圈單鏈表 include include define bool int define false 0 define true 1 typedef struct list list list i...

迴圈鍊錶 迴圈雙鏈表 迴圈單鏈表

迴圈單 雙鏈表,建立 初始化 尾插 頭插 遍歷 插入 刪除 判空 部分函式採用過載 此處為c include include include using namespace std typedef struct lnodelnode,linklist typedef struct dnodednod...