6.逆值/翻轉單鏈表
思想同從頭列印鍊錶一樣,但應注意在反向連線鍊錶時的指向問題
void listtranspose(listnode **pplist,listnode *plist)//轉置單鏈表
(plist->next)->next = plist; //
plist->next =
null;
}
7. 單鏈表排序(氣泡排序)
氣泡排序是兩兩比較,n個數,需要n-1趟,每一趟可以找出最大的數放在這一趟的最右邊:
void listbubb(listnode **pplist)//氣泡排序
head = head->next;
}tail = head;}}
8.合併兩個有序鍊錶,合併後依然有序
最簡單的方法就是用第乙個鍊錶的尾部連上另乙個煉表頭節點,再用氣泡排序:
但這種方法時間複雜太大,有沒有更好的辦法呢?
先找兩個鍊錶第乙個節點的小的頭鍊錶,然後在這鍊錶後面插兩兩比較小的節點。直至其中乙個鍊錶遇到null;
//鏈結鍊錶並排序
listnode* listlink(listnode **pplist_1,listnode **pplist_2)
else
listnode *plist =
*pplist_1;
while(plist_1 && plist_2)
else
plist = plist->next;
}if(plist_1)//遇到null
else
return
*pplist_1;
}
C語言實現單鏈表面試題(基礎篇)
順序表 1.記憶體中位址連續 2.長度不可變更 3.支援隨機查詢 可以在o 1 內查詢元素 4.適用於需要大量訪問元素的 而少量增添 刪除元素的程式 鍊錶 1.記憶體中位址非連續 2.長度可以實時變化 3.不支援隨機查詢 查詢元素時間複雜度o n 4.適用於需要進行大量增添 刪除元素操作而對訪問元素...
C語言實現單鏈表面試題(基礎篇)
順序表 1.記憶體中位址連續 2.長度不可變更 3.支援隨機查詢 可以在o 1 內查詢元素 4.適用於需要大量訪問元素的 而少量增添 刪除元素的程式 鍊錶 1.記憶體中位址非連續 2.長度可以實時變化 3.不支援隨機查詢 查詢元素時間複雜度o n 4.適用於需要進行大量增添 刪除元素操作而對訪問元素...
c語言實現單鏈表面試題
首先實現乙個無頭單鏈表 include include include typedef int datatype typedef struct listnode listnode 列印 void printlist listnode plist printf null printf n 尾插 voi...