獲取鍊錶中的有效節點個數:這是十分簡單的一道面試題,只需要將鍊錶除了頭節點遍歷即可,實現如下
//獲取整個鍊錶的有效節點個數
public
static
intlength
(heronode headnode)
int length =0;
heronode curheronode = headnode.next;
while
(curheronode != null)
return length;
}
獲取鍊錶中的倒數第n個節點的資料:這道題也比較簡單,首先我們需要傳入兩個引數,乙個引數就是獲取到整個鍊錶的頭節點,另乙個引數就是獲取你要查詢的倒數第n個節點的下標,下一步我們需要獲取整個鍊錶的長度,用上面的方法即可獲取到整個鍊錶的長度,然後我們需要判斷當我們的頭節點的next = null 或者要查詢的倒數第n個節點不存在時我們可以直接返回乙個null,然後我們需要通過遍歷來獲得第n個節點,其實非常簡單遍歷到size-index(要查詢的倒數第n個節點)即可,實現如下
public
static heronode findlastindexnode
(heronode heanode,
int index)
if(index <=
0|| index > size)
heronode curnode = heanode.next;
for(
int i =
0; i < size - index; i++
)return curnode;
}
反轉整個鍊錶:先定義乙個新的節點reversehead = new heronode() 這個節點作為乙個新的鍊錶的頭節點,然後開始遍歷原始鍊錶,遍歷到乙個節點就將其取出新增到新的頭節點上去,然後將每次取出的節點都新增到上一次取出的節點的前面去,最後當原始鍊錶遍歷完了之後,再將head.next = reversehead,next 即完成了整個鍊錶的反轉。在這裡我們需要注意的是,為了防止原始的鍊錶斷開,需要建立乙個臨時的變數來進行儲存。
public
static
void
reverselist
(heronode head)
//開始遍歷直到遍歷到整個鍊錶的末尾,也就是當curnode.next = null時
while
(curnode != null)
head.next = reverseheadnode.next;
}
實現反向輸出整個鍊錶:那麼我們有兩種實現方法,第一種方法就是我們上面實現的方法,將整個鍊錶反轉再進行列印,但是這種方法的弊端就是會破壞掉原始的鍊錶,如果別人在使用就會很麻煩。方法二就是將鍊錶的節點依次壓入棧中,根據棧的先進後出原則,再將這些節點 出棧即可,實現如下
public
static
void
reverseprint
(heronode headnode)
stack
stack =
newstack
(); heronode curheronode = headnode.next;
while
(curheronode != null)
while
(stack.
size()
>0)
}
關於linux的幾道面試題
1 linux中主要有哪幾種核心鎖?linux的核心鎖主要是自旋鎖和訊號量。自旋鎖最多只能被乙個可執行執行緒持有,如果乙個執行執行緒試圖請求乙個已被爭用 已經被持有 的自旋鎖,那麼這個執行緒就會一直進行忙迴圈 旋轉 等待鎖重新可用。要是鎖未被爭用,請求它的執行執行緒便能立刻得到它並且繼續進行。自旋鎖...
幾道面試題
系統呼叫與函式的區別 從程式完成的功能來看,函式庫提供的函式通常是不需要作業系統的服務,函式是在使用者空間內執行的,除非函式涉及到i o操作等,一般是不會切到核心態的。系統呼叫是要求作業系統為使用者提供程序,提供某種服務,通常是涉及系統的硬體資源和一些敏感的軟體資源等。函式庫的函式,尤其與輸入輸出相...
幾道面試題
1 下列程式片段執行時間排序 1 for uint i 0 i 1024 i char url char malloc 4096 memset url,0x0,4096 free url 2 for uint i 0 i 1024 i 3 char url char malloc 4096 for ...