單鏈表中按位置查詢
查詢演算法:
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 表示列表的...