單鏈表的部分面試題

2021-08-18 11:08:15 字數 967 閱讀 7815

#include

using namesapce std;

struct node;

//鍊錶逆序輸出(不改變鍊錶)

void reverseprint(node*phead)

cout<

data

<<

"";}

//鍊錶逆置

node* reverse(node*phead)

return prev;

}//鍊錶判環

//設定兩個指標,乙個一次走乙個,乙個一次走兩,如果兩個指標相遇則存在環

node*meetingnode(node*phead)

return

null;

}//環求長度,如果鍊錶存在環,兩個指標在相遇點,在走一遍,做記錄,即求出環的長度

int length(node*phead,int count)

return count;

}//鍊錶求環的入口點,定義兩個從頭開始的指標,乙個先走環的長度,然後兩個指標同時走,將會在入口處匯合

node* entrynodeofloop(listnode* phead)

while(fast!=last)

return last;

}//找出鍊錶倒數第k個節點,設定兩個指標,第乙個指標先走k-1,然後兩個指標同時走,當第乙個指標的next為空時,第二個指標則指向倒數第k個節點

node*findkthtotail(node*phead,unsigned int k)

}slow=phead;

while(fast->next!=

null)

return slow;

}//合併兩個有序鍊錶,合併後依然有序

node*merge(node*phead1,node*phead2)

else

return head;

}

單鏈表的面試題

自定義標頭檔案部分 void deletenottail pnode pos 刪除乙個無頭單鏈表的非尾節點 void insertnothead pnode phead,pnode pos,datatype data 在無頭單鏈表的乙個非頭節點前插入乙個節點 void josephcircle pn...

面試題 單鏈表反轉

問題 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。一 非遞迴演算法 假設有鍊錶a b c d e f g。在反轉鍊錶過程中的某一階段,其鍊錶指標指向為 a b c d e f g。也就是說在結點d之前的所有結點都已經反轉,而結點d後面的結點e開始的所有結點都沒有反轉。這樣...

單鏈表 (面試題)

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