生活随笔
收集整理的這篇文章主要介紹了
2021-9-下旬 数据结构-线性表-动态数组-java代码实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
信管的數據結構講的太水了,遂重學(看的網課:戀上數據結構與算法,講的very good),為算法學習打基礎(都大三了還在打基礎),順便在leetcode上跟進一些相關的題,記錄在這里,這里最方便復習
另一方面發現未來的考試題,除了算法題之外,比較基礎的題(對基本數據結構的各種操作),也占了可觀的一部分
最后,順便新入門了java語言,相比C++,java在寫算法和數據結構這方面還是方便太多了,比如自動回收機制,但是另一方面java對基礎數據類型是值傳遞,而對其他數據類型就都是地址傳遞,而且指針在代碼里體現的也很不明顯,反倒讓我容易混淆,但是熟悉了之后發現對于一點沒學過指針的人,java真是太友好了(于是很快就把C里關于指針的操作忘光了,而且后面發現考試填代碼塊都是用C,于是又換回C++實現了)
public class ArrayListIntZH {private int[] elements
;private int size
;private static final int DEFAULT_CAPACITY
= 10;private static final int ELEMENT_NOT_FOUND
= -1;public ArrayListIntZH(int capacity
){if (capacity
<10){capacity
= 10;}elements
= new int[capacity
];}public ArrayListIntZH(){elements
= new int[DEFAULT_CAPACITY
];}public int size(){return size
;}public void clear(){size
= 0;}public void add(int element
){add(size
,element
);}private void ifNeedEnLarge(int needCapacity
){int oldcapacity
= elements
.length
;if (needCapacity
<=oldcapacity
){return;}else{int newcapacity
= oldcapacity
*2;int[] newElements
= new int[newcapacity
];for (int i
=0;i
<size
;i
++){newElements
[i
]=elements
[i
];}elements
= newElements
;System.out
.println("enLarge Success"+" newCapacity = "+newcapacity
);}}public void add(int index
, int element
){if(index
<0||index
>size
){throw new IndexOutOfBoundsException("Index="+index
+"but,size="+size
);}ifNeedEnLarge(size
+1);for (int i
= size
-1;i
>=index
;i
--){elements
[i
+1]=elements
[i
];}elements
[index
]=element
;size
++;}public void remove(int index
){if(index
<0||index
>size
-1){throw new IndexOutOfBoundsException("Index="+index
+"but,size="+size
);}for (int i
= index
+ 1; i
<size
;i
++ ){elements
[i
-1]=elements
[i
];}size
--;}public boolean isEmpty(){return size
==0;}public boolean contains(int element
){for (int i
=0;i
<size
-1;i
++){if (elements
[i
] == element
){return true;}}return false;}public int get(int index
){if(index
<0||index
>size
-1){throw new IndexOutOfBoundsException("Index="+index
+"but,size="+size
);}return elements
[index
];}public void set(int index
,int element
){if(index
<0||index
>size
-1){throw new IndexOutOfBoundsException("Index="+index
+"but,size="+size
);}elements
[index
] = element
;}public int indexOf(int element
){for (int i
= 0; i
<size
-1;i
++){if (elements
[i
]==element
){return i
;}}return ELEMENT_NOT_FOUND
;}public String arrayPrint(){StringBuilder string
= new StringBuilder();string
.append("size = ").append(size
).append(" ").append("[");for (int i
= 0; i
<size
-1; i
++ ){if (i
!=size
-1) {string
.append(elements
[i
]).append(",");}}string
.append(elements
[size
-1]).append("]");return string
.toString();}}
總結
以上是生活随笔為你收集整理的2021-9-下旬 数据结构-线性表-动态数组-java代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。