java數據結構與演算法第二版
發布時間: 2025-10-15 08:44:01
第1題:我給你搭建演算法框架,具體需求,你只需往裡面寫Code即可:
publicclassProgram{
privatestaticfinalintN=6;
publicstaticvoidmain(String[]args){
Nodehead=newNode(-1,null);//定義頭指針,帶頭結點的單鏈表
for(inti=0;i<N;i++){
Nodee=newNode(i+1,null);
tailInsert(head,e);
}
//Test
Nodep=head;
while(p.getNext()!=null){
p=p.getNext();
}
}
/**
*@paramhead實施尾插法演算法的單鏈表頭指針
*@parame所需的元素
*/
privatestaticvoidtailInsert(Nodehead,Nodee){
Nodep=head;
while(p.getNext()!=null){
p=p.getNext();//尋訪單鏈表,直至到達單鏈表末尾
}
//實施尾插法
p.setNext(e);
}
}
classNode{
privateintid;//編號
privateNodenext;//單鏈表後繼指針
privateStringvote;//選票
publicNode(){}
publicNode(intid,Nodenext){
super();
this.id=id;
this.next=next;
}
publicNode(intid,Nodenext,Stringvote){
super();
this.id=id;
this.next=next;
this.vote=vote;
}
@Override
publicStringtoString(){
return"Node[id="+id+",next="+next+"]";
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicNodegetNext(){
returnnext;
}
publicvoidsetNext(Nodenext){
this.next=next;
}
}
第2題:參看我以前的回答:https://..com/question/431512924412893084
演算法思想已經寫的清楚得不能在清楚了。轉成Java就是小菜一碟。
❷ Java數據結構演算法初體驗:計算1到100的和、10的階乘
在面對不同問題時,解決方案並非唯一,比如從西安到北京,坐飛機、火車、汽車或步行,每種方式成本各異。同理,購買北京二環內四合院,一次性現金或銀行按揭,選擇不同,成本也不同。在編程中,解決相同問題時,使用不同演算法,時間與內存消耗也會有差異。優秀演算法的目標是高效完成任務,節省時間和空間。本文將通過實際案例,體驗演算法帶來的不同。
需求一:計算1到100的和
解法一:直接累加1到100,涉及100次加法運算。
解法二:利用數學公式快速計算,一次加法、一次乘法、一次除法,共3次運算。
解法二明顯更高效,運算次數減少,提高效率。
需求二:計算10的階乘
解法一:遞歸實現,最多需要在棧內存開辟10塊內存,執行10次。
解法二:使用循環,僅在棧內存開辟一次內存執行。
解法二在內存佔用上更優,減少資源消耗。
本文簡要介紹了演算法在解決具體問題時的效率與內存消耗差異,通過實際案例對比,直觀展示了不同演算法的性能。更多數據結構與演算法知識,請參考相關教程與課程資源。
熱點內容