隨着學習的深入線性表的基礎部分已然結束,不由得感嘆時光飛快,好像啥都沒學一樣,經歷了一個國慶是時候再對之前的知識做一個簡單的總結了。
1,單鏈表查找,插入 設置工作指針,計數器
p=first;j=0;
while(p&&j<i-1)
2,雙鏈表
template <class T>struct
DNode{ T data; DNode<T> *llink;//記錄鏈表前驅
DNode <T>*rlink;//記錄後記};
插入操作時,注意尾節點無後繼節點的情況
處理原則:先處理每個方向的 遠端指針,再處理近端指針
3.一元多項式的相加
用三個指針利用已有節點重新組合
while ( pa != NULL && pb != NULL ) { a = pa->data;
b = pb->data;
if(a.exp==b.exp){
//pa->exp == pb->exp
a.coef = a.coef + b.coef;//係數相加
p = pb; pb = pb->next;
delete p; //刪去原pb所指結點
if ( a.coef == 0) {
p = pa; pa = pa->next;
delete p; } //相加爲零, 該項不要
else {
//相加不爲零, 加入ch鏈
pa->data = a;
pc->next = pa;
pc = pa; pa = pa->next;
} }
else if(a.exp>b.exp) { //pa->exp > pb->exp
pc->next = pb; pc = pb;
pb = pb->next; }
else{ //pa->exp < pb->exp
pc->next=pa;
pc = pa; pa = pa->next;
}
}
if (pa ) pc->next=pa;
else pc->next=pb;
4,鏈表合併
新鏈尾指針用來合併,原鏈指針並走
結果多項式的頭指針是a 的頭指針。
逆置單鏈表用頭插