(一)数组对象
数组对象即以对象的形式封装对数组的增,删,改,查的功能。具体见代码,首先封装一个数组对象。
package cn.liusong.Array; public class MyArray { int[] arr; public MyArray() { arr = new int[0]; } //数组大小 public int size() { return arr.length; } //往數組中添加元素 public void add(int element) { int[] newArr = new int[arr.length + 1]; for (int i = 0; i < arr.length; i++) { newArr[i] = arr[i]; } newArr[arr.length] = element; arr = newArr; } //刪除指定下标元素 public void delete(int index) { //判断下标是否越界 if (index < 0 || index > arr.length) { System.out.println("输入下标有误"); } int newArr[] = new int[arr.length - 1]; for (int i = 0; i < newArr.length; i++) { //想要删除的下标之前的元素 if (i < index) { newArr[i] = arr[i]; } else {//想要删除的下标之后的元素 newArr[i] = arr[i + 1]; } } //新数组替换旧数组 arr = newArr; } //在任意位置插入元素 public void insert(int index, int element) { if (index<0 || index > arr.length){ System.out.println("输入下标越界"); } int [] newArr = new int[arr.length+1] ; for (int i = 0 ; i<arr.length ; i++ ){ if (i<index) { newArr[i] = arr[i] ; }else { newArr[i+1] = arr[i] ; } } newArr[index] = element ; arr = newArr ; } //替换指定下标的元素 public void set(int index, int element) { if (index<0 || index > arr.length){ System.out.println("输入下标越界"); } arr[index] = element ; } public int get(int index){ if (index<0 || index > arr.length){ System.out.println("输入下标越界"); } return arr[index] ; } //显示数组所有元素 public void show() { for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } System.out.println("******************************"); } }
再建一个测试类的对象
package cn.liusong.Array; public class TestArray { public static void main(String[] args) { MyArray ma = new MyArray(); int size = ma.size(); System.out.println(size); ma.add(99); ma.add(98); ma.show(); ma.add(97); ma.add(96); ma.add(95); ma.show(); ma.delete(3); ma.show(); ma.insert(3,33); ma.show(); ma.set(2,22); ma.show(); System.out.println(ma.get(4)); } }
0
99
98
******************************
99
98
97
96
95
******************************
99
98
97
95
******************************
99
98
97
33
95
******************************
99
98
22
33
95
******************************
95
Process finished with exit code 0
上面是程序的运行结果。
(二)栈
栈的结构就是用上面数组的结构完成先进后出的功能
package cn.liusong.Array; public class MyStack { int [] arr ; public MyStack(){ arr = new int[0] ; } //向栈中压入元素 public void push(int element){ int[] newArr = new int[arr.length+1] ; for (int i=0;i<arr.length;i++){ newArr[i] = arr[i] ; } newArr[arr.length] = element ; arr = newArr ; for (int i=0;i<arr.length;i++){ System.out.println(arr[i]); } System.out.println("*********************************"); } //从栈中弹出元素 public int pop() { int element; if (arr.length == 0) { System.out.println("Stack is empty!"); } int[] newArr = new int[arr.length - 1]; for (int i = 0; i < newArr.length; i++) { newArr[i] = arr[i]; } element = arr[arr.length-1]; arr = newArr ; return element ; } //查看栈顶元素 public int peek(){ int element = arr[arr.length-1] ; return element ; } //判断栈是否为空 public boolean isEmpty(){ return arr.length == 0 ; } }
再建立一个测试类
package cn.liusong.Array; public class TestMyStack { public static void main(String[] args){ MyStack ms = new MyStack(); ms.push(9); ms.push(8); ms.push(7); ms.push(6); ms.push(5); // System.out.println( ms.pop()); System.out.println( ms.peek()); } }
结果:
(三)队列
队列的结构与栈相似,只是它是先进先出的
package cn.liusong.Array; public class Queue { int [] elements ; public Queue(){ elements = new int[0] ; } public void push(int element){ int newArr [] = new int [elements.length+1] ; for (int i = 0; i<elements.length;i++){ newArr[i] = elements[i] ; } newArr[elements.length] = element ; elements = newArr ; } public int pop(){ int element = elements[0] ; int[] newArr = new int[elements.length-1] ; for (int i=0 ; i < newArr.length ;i++ ){ newArr[i] = elements[i+1] ; } elements = newArr ; return element ; } //判断当前队列是否为空值 public boolean isEmpty(){ return elements.length == 0; } //显示队列 public void show(){ for (int i = 0; i<elements.length;i++){ System.out.println(elements[i]); } System.out.println("****************"); } }
测试队列
package cn.liusong.Array; public class TestQueue { public static void main(String[] args){ Queue q = new Queue() ; q.push(5); q.push(4); q.push(3); q.show(); q.pop(); q.show(); } }
测试结果