// 使用冒泡對單鏈表進行排序
void bubblesort(pnode phead)
// 合併兩個已序鍊錶,合併之後新鍊錶依然有序
pnode mergelist(pnode phead1, pnode phead2)
// 查詢無頭單鏈表的倒數第k個結點
pnode findlastknode(pnode phead, int k);
// 刪除無頭單鏈表的倒數第k個結點
pnode deletelastknode(pnode phead, int k);
// 判斷鍊錶是否帶環,如果帶環求環的長度,並給出入口點
pnode hascircle(pnode phead);
int getcirclelen(pnode phead);
pnode getenternode(pnode phead, pnode pmeetnode);
void bubblesort(pnode phead)//氣泡排序
考慮以下因素:
phead1為空—–返回phead2
phead2為空—–返回phead1
當phead1和phead2都不為空時,分析如圖示:
}
// 判斷鍊錶是否帶環,若帶環給出相遇點
pnode hascircle(pnode phead)
else
}return
null;}}
}// 求環的長度
int getcirclelen(pnode pmeetnode)
return count;
}// 求環的入口點
pnode getenternode(pnode phead, pnode pmeetnode)
else
return pslow;}}
}
鍊錶的面試題
1 比較順序表和煉表的優缺點,它們分別在什麼場景下使用?1 順序表支援隨機訪問,單鏈表不支援隨機訪問。2 順序表插入 刪除資料效率很低,時間複雜度為o n 除尾插和尾刪 單鏈表插入 刪除效率更高,時間複雜度為o 1 3 順序表的cpu高速緩衝效率更高,單鏈表cpu高速緩衝效率低。2 列印單向鍊錶 v...
鍊錶的面試題
slist.h include include include typedef int datatype typedef struct listnode node,pnode 生成乙個新結點 pnode buyslistnode datatype data 列印鍊錶 void printslist ...
有關鍊錶的經典面試題(二)
1.判斷單鏈表是否帶環?若帶環,求環的長度?求環的入口點?並計算每個演算法的時間複雜度 空間複雜度。思路 利用快慢指標,快指標一次走兩步,慢指標一次走一步,如快慢指標有相遇點,則一定有環。找到相遇點後,求環長度問題,可以轉換為求頭結點到 相遇點之間的長度問題。求入口點時,讓快指標回到頭結點,兩指標再...