java實現鏈表反轉
1. java實現單鏈表的反轉 java實現兩個無序單鏈表合並成一個有序的單鏈表誰能給個效率較高的代碼,謝謝!
實現兩個鏈表的合並,編一程序將A表和B表歸並成一個新的遞增有序的單鏈表C你的意思是不是這樣:a表和b表聲明後,在自己內存空間的值就不變了,只是,IuVAbQ
2. 在Java中如何將數組中的數據倒置
最簡單的演算法就是設置一個臨時變數,就像交換兩個變數一樣交換。更好的是使用鏈表,當然也可以使用ArrayCopy,Copy的時候把源數組最後一個賦給新數組的第一個,一個加,一個減。其他還有……
3. Java語言寫出實現將單向鏈表順序反轉的函數
假設鏈表的節點定義如下:
class Node{
int i;
Node next;
}
那麼其反回轉函數為:
void reverse(Node l){
if(l==null) return;
Node p=null,q=l,r=l.next;
while(r!答=null){
q.next=p;
p=q;
q=r;
r=r.next;
}
q.next=p;
l=q;
}
4. Java培訓班的課程一般都學習什麼內容呢
不同學校的課程肯定是不一樣的,但是正規的培訓學校課程一定都包括基礎課程和進階課專程。
首先是Java技術屬的核心和基礎JavaSE,這一階段會接觸到Java基礎語法、面向對象編程思想、Java常用API、多線程並發編程、數據結構/集合框架、IO/網路編程/反射/設計模式。這一階段往往也是最重要的,後面很多知識和框架的應用都是基於這一基礎來的。學完這一部分,要一些簡單的桌面應用程序設計沒有問題。
接下來進階課程中,要用到的就是資料庫(MySQL)和JDBC。在之後,要學習到的是JavaWeb開發技術。學完可以具備開發個人網站和企業網站的能力。
接下來就是最重要的實戰項目了,一般實戰項目會占整個課程的少半時間,從淺入深,會接觸到大小型企業內各種真實實戰項目。 比如內容管理系統(CMS)、智能商貿系統、流行框架應用、B2C/商城項目等。完成這些項目,你對市面上大多數web應用開發、管理系統開發、運用前沿技術開發都得心應手。
5. java反轉鏈表 大神給我添加個注釋好么,我自己研究
publicclassLinktest{
//反轉方法,傳入一個鏈表
publicstaticLinkNodereversal(LinkNodelist){
//pre用來存放前一個鏈表節點
LinkNodepre=list;
//取出下一個鏈表節點,cru用來存放當前鏈表節點
LinkNodecru=list.getNext();
//next用來存放下一個鏈表節點
LinkNodenext;
//如果當前節點不為空(這里意思是如果傳進來的list有下一個節點就繼續執行)
while(null!=cru){
//取出當前節點的下一個節點
next=cru.getNext();
//把前一個節點賦予當前節點的下一個節點(這里產生實際改變)
cru.setNext(pre);
//把當前節點變數賦予前一個節點的變數
pre=cru;
//把下一個節點變數賦予當前
cru=next;
}
//循環體內會循環到方法傳入的LinkNode沒有前一個節點為止
//因為幾次交換的原因
//因為循環結束,所以把next賦空
list.setNext(null);
//因為循環的原因,前一個節點實際是第一個節點
list=pre;
//返回第一個節點
returnlist;
}
publicstaticvoidmain(String[]args){
LinkNodehead=newLinkNode(0);
LinkNodetmp=null;
LinkNodecur=null;
for(inti=1;i<10;i++){
tmp=newLinkNode(i);
if(1==i){
head.setNext(tmp);
}else{
cur.setNext(tmp);
}
cur=tmp;
}
LinkNodeh=head;
while(null!=h){
System.out.print(h.getVal()+"");
h=h.getNext();
}
head=reversal(head);
System.out.println(" **************************");
//列印反轉後的結果
while(null!=head){
System.out.print(head.getVal()+"");
head=head.getNext();
}
}
}
6. 請用C或者Java語言寫出實現將單向鏈表順序反轉的函數。
ListItem* reverseList(ListItem *pHead){
ListItem *p1,*p2;
p1=pHead;
p2=0;
while(p1!=0){
pHead=p1;
p1=p1->next;
pHead->next=p2;
p2=pHead;
}
return pHead;
}
7. Java HashMap擴容的時候,為什麼要把Entry鏈表反轉
需要將鏈表重新整理到新表當中,因為newCap是oldCap的兩倍所以回原節點的索引 值要麼答和原來一樣,要麼就是原(索引+oldCap)和JDK 1.7中實現不同這里不存在rehash,直接使用原hash 值JDK 1.7中resize過程是在鏈表頭插入,這里是在鏈表尾插入
8. 用Java實現的數據鏈表翻轉程序
只是我的實現,應該不是最好的,畢竟使用了類庫里的排序方法。
publicclassDemo{
publicstaticvoidmain(String[]args){
//初始化鏈表
List<Object>list=newArrayList<Object>();
for(inti=1;i<7;i++){
list.add(i);
}
Object[]arrys=list.toArray();
intlength=arrys.length;
//存放結果的數組
Object[]result=newObject[length];
//intlen=2;
//intlen=3;
intlen=4;
for(inti=0;i<length;i=i+len){
//最後一次
if(length-i<len){
len=length-i;
System.array(arrys,i,result,i,len);
break;
}
Object[]arry=newObject[len];
System.array(arrys,i,arry,0,len);
Demo.sortDesc(arry);
System.array(arry,0,result,i,len);
}
System.out.println(Arrays.toString(result));
}
/**
*自定義比較器反向排序
*@paramarrys
*@return
*/
publicstaticObject[]sortDesc(Object[]arrys){
Arrays.sort(arrys,newComparator<Object>(){
@Override
publicintcompare(Objecto1,Objecto2){
Integeri1=(Integer)o1;
Integeri2=(Integer)o2;
if(i1>i2){
return-1;
}elseif(i1<i2){
return1;
}else{
return0;
}
}
});
returnarrys;
}
}
9. 問個java鏈表逆轉的問題
在java中對象的賦值都是傳遞引用
你在在Insert方法中並沒有創建一個新節點,只是版引用之前的節權點
所以你在往第二個表中插入元素後,兩個表的節點變數其實指向了一個對象
因此在Insert方法中要真正的創建一個新節點
void Insert(LinkedNode ln){
LinkedNode tmp = new LinkedNode(ln.value);
if(Head==null){ //如果頭結點為空,那麼附值給頭結點
Head = tmp;
Last = Head; //Last(最後一個結點)指向Head,因為此時只有一個結點,所以即是頭結點,也是最後一個結點
} else {
Last.next = tmp; //將要插入的結點附給Last.next
Last.next.previous = Last; //新插入的結點的前一結點指向Last
Last = Last.next; //更新Last為最後一個
}
}