原创 小白算法積累——圖的遍歷4#鄰接表+簡單路徑

題目:假設圖用鄰接表表示,設計一個算法,輸出從頂點Vi到Vj的所有簡單路徑 關鍵字: 圖,鄰接表,簡單路徑 思路: Vi=u,Vj=v 本題採用基於遞歸的深度優先遍歷算法,從結點u出發,遞歸深度優先遍歷圖中各個結點,若訪問到結點

原创 小白算法積累——圖的遍歷2#DFS,非遞歸算法,鄰接表

題目:寫出圖的深度優先搜索算法DFS的非遞歸算法(圖採用鄰接表形式) **關鍵字:**圖,DFS 非遞歸,鄰接表 思路: 非遞歸算法:犧牲空間換取時間,所以新生成一個棧來存貯訪問過的結點(也是下一步返回可能還要訪問的結點) 在深度

原创 小白算法積累——圖的遍歷1#判斷圖是否爲樹

題目:試設計一個算法,判斷一個無向圖G是否爲一棵樹。若是一棵樹,則返回true,否則返回false 關鍵字:圖 ; 樹的判斷 思路: 判斷一個圖G是否爲樹的條件有兩個: 1.G必須是無迴路的連通圖 (無迴路的判斷有:DFS;拓撲排

原创 小白算法積累——二叉樹#順序存儲+查找公共祖先

題目:已知一棵二叉樹按順序存儲結構進行存儲,設計一個算法,求編號分別爲 i 和 j 的兩個結點最近的公共祖先結點的值。 **關鍵字:**二叉樹 順序結構 查找公共祖先 **思路:**對於兩個結點,他們的位置關係有且僅有兩種:在

原创 小白算法積累——隊列4#無限膨脹存儲空間

題目:請設計一個隊列,要求滿足: 1、初始時隊列爲空; 2、入隊時,允許增加隊列佔用空間; 3、出隊後,出隊元素所佔用的空間可重複使用,即整個隊列所佔用的空間只增不減; 4、入隊操作和出隊操作的時間複雜度始終保持O(1)。 請回答

原创 小白算法積累———隊列1#循環隊列+tag

題目:若希望循環隊列中的元素都能得到利用,則需設置一個標誌域tag,並以tag的值爲0或1來區分隊頭指針front和隊尾指針rear相同時的隊列狀態是“空”還是“滿”。 試編寫與此結構相應的入隊和出隊算法。 關鍵字:循環隊列+ta

原创 小白算法積累——隊列和棧3#棧與隊列的轉化

題目:利用兩個棧s1,s2,來模擬一個隊列,已知棧的4個運算定義如下: Push(S,x); //元素x入棧 Pop(S,x); //S出棧並將出棧的值賦給x StackEmpty(S); //判斷棧是否爲空

原创 小白算法積累——棧1#判斷合法操作序列

題目:I:入棧,O:出棧。寫出一個算法,判定所給的操作序列是否合法。合法要求:棧的初態和終態均爲空。若合法,返回true,否則返回false(假定被判定的操作序列已存入一維數組中) 關鍵字:判斷入棧出棧操作序列是否合法 思路 :

原创 小白算法積累——單鏈表15#2個帶頭結點單鏈表+提取公共元素+二表合一

題目:已知兩個鏈表A和B分別表示兩個集合,其元素遞增排列。編制函數,求A與B的交集,並存放於A鏈表中。 關鍵字:2個帶頭結點單鏈表+提取公共元素+二表合一 思路 二表合一:採用**“歸併”的思想,設置兩個工作指針pa和pb,對兩個

原创 小白算法積累——單鏈表10#帶頭結點單鏈表+奇偶位分解

題目:將一個帶頭結點的單鏈表A分解爲兩個帶頭結點的單鏈表A和B,使得A表中含有原表中序號爲奇數的元素,而B表中含有原表中序號爲偶數的元素,且保持其相對順序不變。 關鍵字:帶頭結點單鏈表+分解 思路 關注:每個元素的序號的奇偶性判斷

原创 小白算法積累——單鏈表6#帶頭結點單鏈表+遞增有序

題目:有一個帶頭結點的單鏈表L,設計一個算法使其元素遞增有序。 關鍵字:帶頭結點單鏈表+遞增有序 思路 採用直接插入排序算法的思想:就是先分理出頭結點+第一個結點組成原始新鏈表,然後依次將後續結點摘下,根據遞增順序接入新鏈表。 1

原创 小白算法積累——單鏈表9#帶表頭結點單鏈表+按值的遞增順序操作

題目:給定一個帶表頭結點的單鏈表,設head爲頭指針,結點結構爲(data,next),data爲整型數據,next爲指針, 試寫出算法:按遞增次序輸出單鏈表中各結點的數據元素,並釋放結點所佔的存儲空間。(要求:不允許使用數組作爲

原创 小白算法積累——雙鏈表17#帶頭結點的循環雙鏈表+判斷對稱

題目:設計一個算法用於判斷帶頭結點的循環雙鏈表是否對稱 關鍵字:帶頭結點的循環雙鏈表+判斷對稱 思路 關注:循環雙鏈表注意靈活使用前驅指正和後繼指針 1.讓p從左向右掃描,q從右向左掃描,直到它們 a、指向同一結點,p=q,當循環

原创 小白算法積累——單鏈表14#帶頭結點單鏈表+提取公共節點+建立新表

題目:設A和B是兩個單鏈表(帶頭結點),其中元素遞增有序,設計一個算法從A和B中的公共元素產生單鏈表C,要求不破壞A,B的結點。 關鍵字:有序帶頭結點單鏈表 + 提取公共節點+建立新表 思路 1.當AB都存在時,遍歷掃描A,B。

原创 小白算法積累——順序表3 #按值刪除

題目:對長度爲n的順序表L,編寫一個時間複雜度O(n),空間複雜度爲O(1) 的算法,該算法功能爲:刪除線性表中所有值爲x的數據元素。 關鍵字:順序表,刪除 思路1: 關注:留下的元素 1.用k記錄順序表L中不等於x的元素個數(即