㈠ java 全部的數據結構有哪些
數據結構不是java所特有的,任何一種編程語言都有數據結構,數據結構是數據在計算機中的存儲方式.與其用什麼語言來實現沒什麼關系.
㈡ java中都有哪些數據結構
數據結構:
①數組 (Array)
在程序設計中,為了處理方便, 把具有相同類型的若干變數按有序的形式組織起來。這些按序排列的同類數
據元素的集合稱為數組。在C語言中, 數組屬於構造數據類型。一個數組可以分解為多個數組元素,這些數組
元素可以是基本數據類型或是構造類型。因此按數組元素的類型不同,數組又可分為數值數組、字元數組、指
針數組、結構數組等各種類別。
②棧 (Stack)
棧是只能在某一端插入和刪除的特殊線性表。它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後
的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來)。
③隊列 (Queue)
一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行
插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列。
④鏈表 (Linked List)
一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。
鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:
一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。
⑤樹 (Tree)
樹是包含n(n>0)個結點的有窮集合K,且在K中定義了一個關系N,N滿足 以下條件:
(1)有且僅有一個結點 k0,他對於關系N來說沒有前驅,稱K0為樹的根結點。簡稱為根(root)
(2)除K0外,k中的每個結點,對於關系N來說有且僅有一個前驅。
(3)K中各結點,對關系N來說可以有m個後繼(m>=0)。
⑥堆 (Heap)
在計算機科學中,堆是一種特殊的樹形數據結構,每個結點都有一個值。通常我們所說的堆的數據結構,是指
二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆。
⑦圖 (Graph)
圖是由結點的有窮集合V和邊的集合E組成。其中,為了與樹形結構加以區別,在圖結構中常常將結點稱為頂點,
邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關系。
⑧散列表 (Hash)
若結構中存在關鍵字和K相等的記錄,則必定在f(K)的存儲位置上。由此,不需比較便可直接取得所查記錄。稱
這個對應關系f為散列函數(Hash function),按這個思想建立的表為散列表。
差不多我就知道這些了~
㈢ java 數據結構
List<String> srcStrList = new ArrayList<String>();
List<String> tarStrList = new ArrayList<String>();
String temp = "a";
for(int i = 0; i < 10; i ++) { //構建一個List
srcStrList.add(temp);
temp += temp;
}
int siz = srcStrList.size();
for(int i = 0; i < siz; i + 2) { //實現
tarStrList.add(srcStrList.get(i));
}
Java里,局部變數需要初始化,一樓的一句代碼有問題,沒有初始化
Vector[int] b; //沒有初始化
㈣ 數據結構可以用Java寫嗎
可以的。
不過 最好你找一本java版本的數據結構來學。
如果數據結構教材本身是C或者C++版本的, 那麼書上的樣例和講述都是按照C/C++方式, 自己改成java會很累的。
當然,不管是什麼演算法, 都是通用的, C/C++可以實現, 那麼java就可以實現。無非是難度和效率不一樣而已。
㈤ 數據結構(java版)
packagegame24.datastructure.list;
/**
*鏈表的結點
*@authorluoweifu
*
*/
classNode{
Objectdata; //數據元素
Nodenext; //後驅結點
publicNode(){
this(null);
}
publicNode(Objectdata){
this.data=data;
this.next=null;
}
}
/**
*帶頭結點的鏈式鏈表,下標從0開始;
*@authorAdministrator
*
*/
publicclassSinglyLinkedList<E>{
Nodehead; //頭結點
intsize; //鏈表的大小
publicSinglyLinkedList(){
head=newNode();
size=0;
}
publicSinglyLinkedList(E[]datas){
intn=datas.length;
head=newNode();
Nodep=head;
for(inti=0;i<n;i++){
p.next=newNode(datas[i]);
p=p.next;
}
size=n;
}
publicSinglyLinkedList(SinglyLinkedListlist){
head=list.head;
size=list.size();
}
publicvoidadd(Objecte){
Nodep;
if(0==size){
p=head;
}else{
p=index(size-1);
}
p.next=newNode(e);
size++;
}
publicvoidconcat(SinglyLinkedListlist){
NodelastNode=this.index(size-1);
lastNode.next=list.index(0);
size+=list.size();
}
publicvoidclear(){
head.next=null;
size=0;
}
publicObjectget(inti){
Nodep=index(i);
returnp.data;
}
privateNodeindex(inti){
Nodep=null;
if(i>=0&&i<size){
p=head;
for(intj=0;j<=i;j++){
p=p.next;
}
}
returnp;
}
publicintindexOf(Objecte){
Nodep=head.next;
inti=0;
while(!p.data.equals(e)){
p=p.next;
i++;
}
if(i<size)
returni;
else
return-1;
}
publicvoidinsert(inti,Objecte){
Nodep=index(i);
Nodep2=newNode(e);
p2.next=p.next;
p.next=p2;
size++;
}
publicbooleanisEmpty(){
if(size==0)
returntrue;
else
returnfalse;
}
publicintlastIndexOf(Objecte){
inti=size-1;
while(!get(i).equals(e)){
i--;
}
if(i>=0)
returni;
else
return-1;
}
publicvoidremove(inti){
if(i>=0&&i<size){
Nodep=null;
if(i==0)
p=head;
else{
p=index(i-1);
}
p.next=index(i).next;
}
size--;
}
publicvoidset(inti,Objecte){
Nodep=index(i);
p.data=e;
}
publicintsize(){
returnsize;
}
@Override
publicbooleanequals(Objectobj){
SinglyLinkedListlist=(SinglyLinkedList)obj;
if(this==obj&&size==list.size){
returntrue;
}
returnfalse;
}
/**
*測試線性表
*@paramargs
*/
publicstaticvoidmain(Stringargs[]){
//Listlist=newLinkList();
//Listlist=newDoubleLinkList();
SinglyLinkedListlist1=newSinglyLinkedList();
for(inti=0;i<10;i++){
list1.add(newInteger(i));
}
Integer[]a={101,102,103,104,105,106,107,108,109,110};
SinglyLinkedListlist=newSinglyLinkedList(a);
list.remove(9);
System.out.print("size:"+list.size()+" ");
System.out.println("isEmpty:"+list.isEmpty());
System.out.print("第7個位置的元素:"+list.get(7)+" ");
list.concat(list1);
for(inti=0;i<list.size();i++){
System.out.print(list.get(i)+"");
}
list.add(21);
list.add(22);
list.insert(3,newInteger(5));
System.out.print("size:"+list.size()+" ");
System.out.print("第一次出現5的索引:"+list.indexOf(5)+" ");
System.out.print("最後一次出現5的索引:"+list.lastIndexOf(5)+" ");
list.set(0,newInteger(30));
for(inti=0;i<list.size();i++){
System.out.print(list.get(i)+"");
}
SinglyLinkedListlist2=list;
System.out.println(" isequels?"+list2.equals(list));
}
}
㈥ 什麼是java數據結構
數據結構不是JAVA專有.
應該說數據結構是獨立於某個具體語言的.
單從JAVA來說,就是用JAVA語言的語法方式,來表達一個對象應該具有什麼樣的表現形式.
㈦ java數據結構
B.push(A.pop());
A.pop();
解釋:
A.pop() 去掉A的最後一個,即4, 變成1,2,3。而且返回這個4
A.pop() 去掉3
B.push() 接受一個值,放在最後。
因為push接受的是A.pop()返回的4,所以,B就變成 5,6,7,8,4
㈧ Java 常用數據結構
線性表,鏈表,哈希表是常用的數據結構,在進行Java開發時,JDK已經為我們提供了一系列相應的類來實現基本的數據結構。這些類均在java.util包中。
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap