單鏈表面試題彙總(1)

2021-07-25 06:22:04 字數 1428 閱讀 1565

//逆序列印單鏈表

void ptinttailtohead(slistnode*& phead)

}//刪除乙個無頭結點的非尾節點

void deletenottail(slistnode* pos)

//約瑟夫環

slistnode* circle(slistnode*& phead, int k)

tail = cur;

tail->next = phead;

slistnode* last = phead;

while (last->next != last)

//刪除當前節點的後乙個節點,把後乙個節點的值賦給當前節點

slistnode* next = last->next;

last->

data

= next->

data;

last->next = next->next;

free(next);

}return last;

}//氣泡排序單鏈表

void bobblesort(slistnode*& phead)

slistnode* tail =

null;//記錄每一次迴圈所需次數,到上一次迴圈所排好的最後乙個數為止

slistnode* cur =

null;

slistnode* next =

null;

docur = next;

next = next->next;

tail = cur;

} while (next != tail);

}//合併兩個有序單鏈表,合併後依然有序

slistnode* merge(slistnode* list1, slistnode* list2)

else

list1->next = list2;

list2 = list2->next;

list1 = list1->next;

tail = newhead->next;

while (list1 !=

null

&&list2 !=

null)

}if (list1)

if (list2)

return newhead;

}//查詢鍊錶的中間節點,只遍歷一次鍊錶

slistnode* findmidnode(slistnode*& phead)

return slow;

}//查詢鍊錶的倒數第k個節點,只能遍歷一次

slistnode* findlastk(slistnode*& phead,int k)

while (fast->next) //快慢指標在同時走

return slow;

}

鏈表面試題彙總

單鏈表反轉 兩種 劍指offer,題16 順序的ok 遞迴的nok 查詢單鏈表中的中間結點 兩個指標,乙個走一步,乙個走2步,走2步的那個null,則停止 ok 查詢單鏈表中的倒數第k個結點 劍指offer,題15 兩個指標 乙個先走,再同時走,先走的那個null了,則停止 ok 合併兩個有序的單鏈...

單鏈表 (面試題)

關於單鏈表的基本操作,之前已經總結過了,那些掌握之後算是了解了單鏈表是什麼?不過現在面試的題中,肯定不會只讓你回答單鏈表的基礎操作,總是會改變一些東西,或是擴充套件一下。下面就是一些關於單鏈表的擴充套件內容 include include include pragma warning disable...

單鏈表面試題

1.倒序列印鍊錶 void reverseprint slistnode pfirst 有兩種方法 1.遞迴操作 2.非遞迴操作 2 非遞迴 slistnode pend slistnode pcur pend null while pfirst pend pend pcur printf d pe...