關於C單鏈表的面試題(基礎篇)

2021-08-02 09:36:56 字數 2435 閱讀 1582

1.比較順序表和煉表的優缺點,說說它們分別在什麼場景下使用?

2.從尾到頭列印單鏈表

3.刪除乙個無頭單鏈表的非尾節點

4.在無頭單鏈表的乙個節點前插入乙個節點

5.單鏈表實現約瑟夫環

6.逆置/反轉單鏈表

7.單鏈表排序(氣泡排序&快速排序)

8.合併兩個有序鍊錶,合併後依然有序

9.查詢單鏈表的中間節點,要求只能遍歷一次鍊錶

10.查詢單鏈表的倒數第k個節點,要求只能遍歷一次鍊錶

typedef int datatype;

typedef struct listnode

listnode;

1.比較順序表和煉表的優缺點

順序表:記憶體中位址連續

長度不可變更

支援隨機查詢 可以在o(1)內查詢元素

適用於需要大量訪問元素的 而少量增添/刪除元素的程式

鍊錶 :記憶體中位址非連續

長度可以實時變化

不支援隨機查詢 查詢元素時間複雜度o(n)

適用於需要進行大量增添/刪除元素操作 而對訪問元素無要求的程式

2.從尾到頭列印單鏈表

void printtalitohead(listnode* plist)//從尾到頭列印單鏈表

3.刪除乙個無頭單鏈表的非尾節點

void delnoheadnotail(listnode* pos)//刪除乙個無頭單鏈表的非尾節點 

4.在無頭單鏈表的乙個節點前插入乙個節點

void addnohead(listnode* pos, datatype x)//在無頭單鏈表的乙個節點前插入乙個節點 

5.單鏈表實現約瑟夫環

問題描述

:約瑟夫問題的一種描述是:編號為1,2,…,n的n個人按順時針方向圍坐一圈,每人持乙個密碼(正整數)。一開始任選乙個正整數作為報數上限值m,從第乙個人開始按順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下乙個人開始重新從1報數,如此下去,直至所有人全部出列為止。

listnode* josephring(listnode* list, int k)//約瑟夫環 

pos->next = cur; //將單鏈表的首尾節點連起來成環

if (list == null)

while (cur->next != cur)

next = cur->next;

cur->data = next->data;

cur->next = next->next;

free(next);

} return cur;

}

6.逆置/反轉單鏈表

listnode* reverse(listnode* list)//逆置/反轉單鏈表 

return newlist;

}

7.單鏈表排序(氣泡排序&快速排序)

void bubblesort(listnode* list)//單鏈表排序(氣泡排序&快速排序)

while (tail != list->next)

cur = cur->next;

next = next->next;

} tail = cur;

}}

8.合併兩個有序鍊錶,合併後依然有序

void conbine(listnode* list1,listnode* list2)//合併兩個有序鍊錶,合併後依然有序

else if ((list1 == null)&&(list2 != null))

else

tmp->next = list2;

bubblesort(list1);

}}

9.查詢單鏈表的中間節點,要求只能遍歷一次鍊錶

listnode* searchmid(listnode* list)//查詢單鏈表的中間節點,要求只能遍歷一次鍊錶 

return slow;

}

10.查詢單鏈表的倒數第k個節點,要求只能遍歷一次鍊錶

listnode* searchbknode(listnode* list, int k)//查詢單鏈表的倒數第k個節點,要求只能遍歷一次鍊錶 

}while(fast->next)

return slow;

}

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單鏈表的面試題(高階題)

listnode iscysle listnode list 判斷單鏈表是否帶環,返回交點 return null int getcyclelen listnode list 環的長度 count return count else listnode getcyclenenrty listnode ...