注意:以下所有鍊錶均包含空的頭結點。
#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...