更新時間:2020-03-24 13:37:49 來源:動力節點 瀏覽2585次
棧:這是一個先進后出的數據結構,生活中類似的瀏覽器的返回上一頁就可以利用此結構實現,代碼如下:
publicclassStack<T>{ privateObject[]data;//存儲數據 privateinttop;//表示棧頂元素 publicStack(){ data=newObject[100];//為了說明原理隨意指定 top=-1; } publicsynchronizedvoidput(Tt){//壓棧 data[data.length]=t; top++; } publicsynchronizedTpop(){//出棧 if(top<0){ returnnull; } Tt=(T)data[top]; top--; returnt; } }
這只是我自己的Java實現只說明原理,但實際在java中是利用vector來存儲數據的,我們知道vector其實是一個線程安全的ArrayList,而ArrayList的底層也是一個數組,所以原理上大同小異
隊列:隊列其實就是我們生活中的排隊現象,先進入的先出,后進入的后出,代碼實現如下:
publicclassQueue<T>{ privateObject[]data;//存儲數據 privateinthead;//頭 privateinttail;//尾 publicQueue(){ data=newObject[100];//為了說明原理隨意指定 head=1; tail=1; } publicvoidput(Tt){ data[tail]=t; tail++; } publicTget(){ Tt=(T)data[head]; head++; returnt; } }
如上所示,也只是說明原理,其實在javajdk中也有許多不同的對列,并且對列可以由數組實現,也可以由鏈表實現,下面介紹鏈表
鏈表是一個類似于現實中串項鏈的數據結構,前一個數據指向后一個數據,當然也可以后一個數據指向前一個數據,這就是雙向鏈表,這里不做討論
publicclassMyNode<T>{ privateNode<T>headNode; publicMyNode(Tt){ headNode=newNode<>(t,null); } publicMyNode(){ } privatestaticclassNode<E>{ Objecte; Node<E>next; Node(Eelement,Node<E>next){ this.e=element; this.next=next; } } publicvoidput(Tt){ if(headNode==null){ headNode=newNode<>(t,null); }else{ headNode=newNode<>(t,headNode); } } publicTget(intindex){ Nodenode=headNode; for(inti=2;i<index;i++){ node=node.next; } Tt=(T)node.e; returnt; } }
以上就是用Java實現的簡單鏈表,還有雙向鏈表是一個元素指向前一個元素和后一個元素,原理大概相同,這里可以看書鏈表中取固定位置的數據是非常麻煩的,必須從第一個開始依次查找,這也就是linklist不用for(inti=0;i++;i<size())遍歷的原因,因為linklist的底層就是通過鏈表來實現的
以上就是動力節點Java培訓機構小編介紹的“Java基礎學習:Java實現隊列”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習