第五節 單鏈表 二

2021-09-29 12:07:16 字數 1534 閱讀 6088

單鏈表中按位置查詢

查詢演算法:

1.工作指標p初始化,計數器初始化

2.執行下列操作,直到p為空或指向第i個節點,工作指標後移,計數器增1

3.若p為空,則第i個元素不存在,丟擲位置異常;否則查詢成功,返回節點p的資料元素

具體實現:

template

t linklist::get(int i)

if (!p) throw 「位置」;

else return p->data;

}單鏈表的插入操作(按位置進行插入)

演算法描述:

1.工作指標p初始化,計數器初始化

2.查詢第i-1個節點,並使工作指標p指向該節點

3.若查詢不成功(p==null),說明位置錯誤,丟擲位置異常,否則:生成乙個元素值為x的新節點s,並將s插入到p之後

具體實現:

template

void linklist::insert(int i, t x)

if (!p) throw 「位置」;

else

}單鏈表的刪除操作:

template

t linklist::delete(int i)

if (!p || !p->next) throw 「位置」; //結點p不存在或結點p的後繼結點不存在

else

}析構函式://帶頭結點的

template

linklist:: ~linklist()

}順序表和單鏈表的比較:

用順序表:

若線性表的操作主要是進行查詢,很少做插入和刪除時,宜採用順序表做儲存結構

用單鏈表:

因此,對於頻繁進行插入和刪除的線性表, 宜採用鍊錶做儲存結構。

將單鏈表或者雙鏈表的頭尾結點鏈結起來,就是乙個迴圈鍊錶。

不增加額外儲存花銷,卻給不少操作帶來了方便

從迴圈表中任一結點出發,都能訪問到表中其他結點。

特點:判斷迴圈鍊錶中尾結點:

q->next==first

建造空表:

template

cyclelinklist:: cyclelinklist( )

尾插法建造:

template

cyclelinklist:: cyclelinklist(t a[ ], int n)

r->next=first; //單鏈表建立完畢,將終端結點的指標域指向頭結點

}頭插法建造:

template

cyclelinklist:: cyclelinklist(t a[ ], int n,int k)

}改造成迴圈的:

p=first;

while(p->next)

p->next=first

函式第五節

coding utf 8 1.定義乙個func name 該函式效果如下。assert func lilei lilei assert func hanmeimei hanmeimei assert func hanmeimei hanmeimei def title name if isinsta...

第五節 字典

字典的表現形式為大括號 dict key必須可hash,必須唯一且必須為不可改變的資料型別 value可存放任意多個值,可修改,可不唯一 無序且查詢速度快 鍵 值 鍵值對 1 dic.keys 返回乙個包含字典所有key的列表 2 dic.values 返回乙個包含字典所有value的列表 3 di...

第五節 列表(list)

lpush listname value lpush 命令將乙個或多個值插入到列表頭部。lpush newlist valuea valueb lindex listname index 佇列從做往右,索引從0開始。隊頭在左邊,新插入的元素就是索引為0的元素。你也可以使用負數下標,以 1 表示列表的...