//思路:1.編寫乙個方法,接收head節點,同時接收index 節點
// 2.index 表示倒數第 index 個節點
// 3.先把鍊錶從頭到尾遍歷,得到鍊錶的總長度
// 4.得到size後,我們從鍊錶第乙個開始遍歷,遍歷(size - index)個
// 5.如果找到返回該節點,找不到返回空
public
static student findlastindexstudent
(student head,
int index)
int size =
getlength
(head)
;//做乙個index校驗
if(index <=
0|| index >size)
//定義乙個輔助遍歷,for迴圈定位到index位置上
student temp = head.next;
for(
int i=
0;i)return temp;
}//思路:1.先定義乙個新的節點,當新鍊錶的頭節點
// 2.遍歷舊的鍊錶,每次遍歷到乙個節點就將其拿出,放到新的鍊錶中
// 3.接下來每次遍歷取出的節點,都放到之前那個節點的前面插入
// 4.最後將原始的頭節點指向新的鍊錶的節點
public
static
void
reverselist
(student head)
student reversehead =
newstudent(0
,"",0
);student temp = head.next;
//原鍊錶的輔助指標
student temp1 = null;
//指向當前節點temp下乙個節點
while
(temp != null)
head.next=reversehead.next;
}//思路:使用棧的思想,先進後出
public
static
void
reverseprint
(student head)
//建立乙個棧,將各個節點壓入棧中
stack
stack =
newstack
();student temp = head.next;
//將各個節點壓入
while
(temp != null)
//列印棧中的節點
while
(stack.
size()
>0)
}}
public
class
singlelinkedlistdemo
//獲取節點的個數
/** *
* @param head 頭節點
* @return 返回有效節點個數
*/public
static
intgetlength
(student head)
while
(temp != null)
return length;
}class
student
@override
public string tostring()
';}}
//定義單鏈表,管理學員資訊
class
singlelinkedlist1
//分析:新增節點到鍊錶:
public
void
add(student student)
if(temp.next.no >student.no )
else
if(temp.next.no == student.no)
temp=temp.next;
}//flag判斷
if(flag)
else
}//顯示
public
void
showinfo()
//仍然建立乙個輔助指標,頭節點不能動
student temp = head.next;
while
(true
)//輸出節點資訊
system.out.
println
(temp)
;//將temp後移
temp = temp.next;}}
}
周老師突擊大廠面試題記錄
對於雙向繫結的理解 vue2.0 對比 vue3.0 首先 vue2.0 雙向繫結使用的是 object.defineproperty 具體 vue 2 var obj 深拷貝 let newobj json parse json stringify obj object.definepropert...
面試題 單鏈表反轉
問題 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。一 非遞迴演算法 假設有鍊錶a b c d e f g。在反轉鍊錶過程中的某一階段,其鍊錶指標指向為 a b c d e f g。也就是說在結點d之前的所有結點都已經反轉,而結點d後面的結點e開始的所有結點都沒有反轉。這樣...
單鏈表的面試題
自定義標頭檔案部分 void deletenottail pnode pos 刪除乙個無頭單鏈表的非尾節點 void insertnothead pnode phead,pnode pos,datatype data 在無頭單鏈表的乙個非頭節點前插入乙個節點 void josephcircle pn...