#pragma once#include單鏈表的面試題"list.h"//
1.逆序列印單鏈表
template
void list::printtailtohead(node *phead)
//2.刪除無頭節點的單鏈表的非尾節點
template
void list::delnontailnode(node *pos)
//3.無頭單鏈表某一節點前插入乙個節點
template
void list::insertfrontnode(node*pos, t x)
//4.逆置單鏈表
template
void list::reverselist()
_head =new_head;}//
5.單鏈表的氣泡排序
template
void list::bubblesortoflist()
cur = cur->_next;
}tmp == null ? sign = false : tail =cur;;
}}//
6.中間節點
templatelistnode
* list::middleoflist()
return
slow;}//
7.單鏈表中的倒數第 k 個節點
templatelistnode
* list::reciprocalk(int
k)
while
(tmp)
return
result;}//
8.判斷乙個鍊錶是否帶環,如果帶環求出環的長度以及入口點
templatelistnode
* list::isringlist()
while (fast ==slow);
cout
<< "
環的節點的個數為:
"<< count <
while (input ==slow)
return
input;}}
return
null;}//
9.判斷兩個鍊錶是否相交,如果相交求出交點(不帶環)
templatelistnode
* list::iscross(const list& list1, const list&list2)
while
(tmp2)
tmp1 = list1._head, tmp2 = list2._head; /*
重新指向鍊錶的頭
*/int n = abs(length1 -length2);
if (length1 > length2) /*
如果鍊錶一 長於 鍊錶二
*/ }
else
/*如果鍊錶二 長於 鍊錶一
*/ }
while
(tmp1)
}return null; /*
沒找到,null 返回*/}
//10.判斷兩個鍊錶是否相交,如果相交求出交點(不確定帶不帶環)
templatelistnode
* list::iscrossstrengthen(const list& list1, const list&list2)
}return
false; /*
乙個鍊錶帶環,乙個不帶環
*/}
單鏈表相關的面試題
slist.h void printlistfromtail2head pnode phead 從尾到頭列印單鏈表 void erasenottailnode pnode pos 刪除非尾結點 void insertfront pnode pos,datatype data 無頭單鏈表插入結點 vo...
單鏈表相關熱點面試題(一)
對於單鏈表相關的問題,往往是面試的熱點,在此我總結了一些單鏈表相關熱點面試題 一 比較順序表和煉表的優缺點,說說它們分別在什麼場景下使用?一 順序表的特點是邏輯上相鄰的資料元素,物理儲存位置也相鄰,並且,順序表的儲存空間需要預分配。它的優點是 1 方法簡單,各種高階語言中都有陣列,容易實現。2 不用...
單鏈表詳解以及單鏈表相關面試題總結
目錄 1.單鏈表的定義 2.獲取單鏈表的第i個元素 3.單鏈表的插入操作 4.單鏈表的刪除操作 5.單鏈表的整表刪除 6.判斷兩個單鏈表是否相交 7.如果兩個鍊錶相交,如何尋找相交的節點 8.判斷乙個單鏈表是否有環 9.如果乙個鍊錶有環,如何找到環的入口 10.找到單鏈表中的倒數第k個節點 11.兩...