線性表之迴圈鍊錶程式設計系列複習題 834考點複習

2021-09-24 14:27:28 字數 1458 閱讀 6358

834考綱要求:

1、概念級知識點:首尾相接的鍊錶為迴圈鍊錶。任一節點出發均就可以 找到表中其他節點,分 單向迴圈和雙向迴圈鍊錶

特殊性---當遍歷時,判空的終止條件不同,單鏈表判空-----p!=null或p->next !=null,迴圈單鏈表判空-----p!=l 或 p->next !=l

雙向迴圈鍊錶:單向鏈的指標只能向後尋查節點---單向性,雙向鍊錶訪問節點靈活,任意位置節點都可以移動指標訪問到,判空----l-next=l->prior=l;

2、基本操作:迴圈單鏈和單鏈表的增刪等操作演算法基本相同,只是記得尾節點加上最後指向頭節點的指標。故以下操作均指迴圈雙鏈

插入節點(與頭插法建立迴圈雙鏈表同+與雙鏈表插入節點同):在*p節點之後插入*q節點

q->next=p->next;

p->next->prior=q;

p->next=q;

q->prior=p;

(其中順序可換,不像單鏈表)

//簡單記:箭頭指向誰,誰就在等號右邊,這樣可以快速很多

刪除節點(與雙鏈表刪除節點同):刪除*p節點之後的節點

q=p->next;

p->next=q->next;

q->next->prior=p;

free(q);

//也可以是(上種更好)

p->prior->next=p->next;

p->next->prior=p->prior;

free(p);

3、多項式在鍊錶中(其實不難,新在乙個節點有多個資料項,用結構體解決)

實現多項式相加的演算法如下:

//結構定義:

typedef struct pnode

pnode,*polynomial;

void addpolyn(polynomial &pa,polynomial &pb)

else //和係數為0,刪掉對應節點

}else if(p1->expnexpn)

else

}//while

p3->next=p1?p1:p2; //鏈入可能剩餘的那段非空多項式的遺留項

free(pb);

}

鍊錶複習題

c或者c 實現下面的題目並測試 1.比較順序表和煉表的優缺點,說說它們分別在什麼場景下使用?2.從尾到頭列印單鏈表 3.刪除乙個無頭單鏈表的非尾節點 4.在無頭單鏈表的乙個節點前插入乙個節點 5.單鏈表實現約瑟夫環 6.逆置 反轉單鏈表 7.單鏈表排序 氣泡排序 快速排序 8.合併兩個有序鍊錶,合併...

複習 線性表習題

1.順序儲存方式插入和刪除時效率太低,因此它不如鏈式儲存方式好。x 二者各有優缺點 取元素和插入刪除 應看具體場景 2.鍊錶中的頭結點僅起到標識的作用。x 頭結點還有簡化操作的作用 3.靜態鍊錶中指標表示的是 下一元素的陣列下標 4.設乙個鍊錶最常用的操作是在末尾插入結點和刪除尾結點,則選用 d 最...

線性表 迴圈鍊錶

迴圈鍊錶的定義 將單鏈表中最後乙個資料元素的next指標指向第乙個元素,即把鍊錶的兩頭連線,形成了乙個環狀鍊錶,稱為迴圈鍊錶 在迴圈鍊錶中可以定義乙個 當前 指標,稱為游標,通過游標來遍歷鍊錶中所有元素 迴圈鍊錶和動態鍊錶相比,唯一的不同就是迴圈鍊錶首尾相連,其他都完全一樣 可以用兩次列印迴圈鍊錶,...