Untitled
unknown
plain_text
2 years ago
4.7 kB
4
Indexable
//List ADT interface List<E> { int size(); boolean isEmpty(); E get(int i); E set(int i, E e); void add(int i, E e); E remove(int i); } class ArrayList<E> implements List<E> { private E[] data; private int size = 0; private static final int CAPACITY = 10; public ArrayList() { data = (E[]) new Object[CAPACITY]; } public ArrayList(int c) { data = (E[]) new Object[c]; } @Override public int size() { return size; } @Override public boolean isEmpty() { if (size == 0) { return true; } else { return false; } } @Override public E get(int i) { //validate the index //i 0---> n-1 if (i < 0 || i >= size) { System.out.println("Invalid index"); return null; } else { return data[i]; } } @Override public E set(int i, E e) { //validate the index //0---> n-1 if (i < 0 || i >= size) { System.out.println("Invalid index"); return null; } //store old value E temp = data[i]; //update data[i] = e; return temp; } @Override public void add(int i, E e) { //validate the index //0--->n if (i < 0 || i > size) { System.out.println("Invalid index"); return;//exit } if (size == data.length) { resize(2 * data.length); } //shifting for (int k = size - 1; k >= i; k--) { data[k + 1] = data[k]; } data[i] = e; size++; } @Override public E remove(int i) { //validate the index if (i < 0 || i >= size) { System.out.println("Invalid index"); return null; } E temp = data[i]; //shifting to left for (int k = i; k < size - 1; k++) { data[k] = data[k + 1]; } data[size - 1] = null; size--; return temp; } //resize private void resize(int capacity) { E[] temp = (E[]) new Object[capacity]; //copy all elements for (int i = 0; i < size; i++) { temp[i] = data[i]; } //change the array data = temp; } } class Main { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(5); list.add(0, 10); list.add(1, 20); list.add(2, 30); list.add(3, 40); list.add(4, 50); list.add(5, 60); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } public static int sum(int[] A, int size, int count) { int total = 0; for (int i = 0; i < count; i++) { total += A[i]; }//end loop return total; } public static int search(int[] A, int size, int count, int key) { for (int i = 0; i < count; i++) { if (key == A[i]) { return i; } }//end for return -1; } public static void printArray(int[] A, int count, int size) { for (int i = 0; i < count; i++) { System.out.print(A[i] + " "); } System.out.println(); } public static void insrtedSort(int[] A, int count, int size, int key) { if (count == size) { System.out.println("Array is full!"); return; //exit } int i; //to find the correct location (index) for (i = 0; i < count; i++) { if (A[i] > key) { break; } } //shift for (int j = count - 1; j >= i; j--) { A[j + 1] = A[j]; } A[i] = key; count++; } public static void delete(int[] A, int count, int size, int key) { if (count == 0) { System.out.println("Array is empty!"); return; //exit } int index = search(A, size, count, key); if (index == -1) { System.out.println("The key isn not found!"); return; //exit } //shift to left for (int i = index; i < size - 1; i++) { A[i] = A[i + 1]; } count = count - 1; } }
Editor is loading...