C語言實現單鏈表面試題 基礎篇(中)

2021-08-02 09:05:06 字數 1344 閱讀 8624

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...