Only twe conditions need to help with ,please doing work on the gaven code. can add methods on BetterArray class if necessary.
a. Create the object and make its size 10 elements. (I have done on my code)
Store a random sequence of 10 numbers in the array.
Read back the elements 0 thru 19 and display the values. (the index has no elem just show 0)
b. Store a random sequence of 20 numbers in the array.
Insert the number 999 immediately before element 14.
Read back the elements 0 thru 20 and display the values.
public class TestBetterarray
{
public static void main(String[] args)
{
BetterArray array = new BetterArray(10);
// for (int i = 0; i < array[10]; i++) {
// array[i] = (int) (Math.random() * 10);
// }// end for
for (int i = 200; i < 210; i++) {
array.put(i – 200, i);
System.out.print(“”+ i +” “);
}
================================================
public class BetterArray {
private Node head;
private Node tail;
private int noOfNodes;
private int recAddNodeIndex;
private Node recAddNode;
//class constructor, n is the initial allocation (the starting array size).
public BetterArray(int n) {
for (int i = 0; i < n; i++) {
Node node = new Node();
if (i == 0) {
head = node;
head.prev = null;
recAddNode = head;
continue;
}
recAddNode.next = node;
node.prev = recAddNode;
recAddNode = node;
}
tail = recAddNode;
tail.next = null;
noOfNodes = n;
recAddNodeIndex = n – 1;
}
// class constructor, use default initial allocation
public BetterArray() {
head = new Node();
head.next = null;
head.prev = null;
tail = head;
recAddNodeIndex = 1;
recAddNode = head;
}
// uses the index to access a specific array element (node) and returns the value to the caller
public int get(int index) throws IndexOutOfBoundsException {
if (index < noOfNodes) {
int tempIndex = 0;
Node temp = head;
while (tempIndex < index) {
temp = temp.next;
tempIndex++;
}
recAddNodeIndex = index;
recAddNode = temp;
return temp.get();
} else {
throw new IndexOutOfBoundsException(“Index should be less than the number of nodes.”);
}
}
//uses the index to find the specific array element (node) and saves the data value in the node.
//If the requested node is outside the current size of the array (linked-list), expand the list to accommodate the new element.
public void put(int value, int index) {
if (index < noOfNodes) {
int tempIndex = 0;
Node temp = head;
while (tempIndex < index) {
temp = temp.next;
tempIndex++;
}
recAddNode = temp;
recAddNodeIndex = index;
temp.set(value);
} else {
recAddNode = tail;
for (int i = noOfNodes; i <= index; i++) {
Node node = new Node();
recAddNode.next = node;
node.prev = recAddNode;
recAddNode = node;
}
tail = recAddNode;
recAddNodeIndex = index;
noOfNodes = index + 1;
tail.set(value);
}
}
// uses the index to find the specific array element (node) and saves the data value in the node.
// If the requested node is outside the current size of the array (linked-list), expand the list to accommodate the new element.
public void insert(int value, int index) {
if (index == 0) {
Node node = new Node(value);
node.next = head;
head = node;
head.prev = null;
noOfNodes++;
} else if (index < noOfNodes) {
get(index);
Node Prev = recAddNode.prev;
Node node = new Node(value);
Prev.next = node;
node.next = recAddNode;
node.prev = Prev;
recAddNode.prev = node;
noOfNodes++;
} else if (index == noOfNodes) {
Node node = new Node(value);
tail.next = node;
node.prev = tail;
tail = node;
noOfNodes++;
} else {
put(value, index);
}
get(index);
}
// uses the index to find the specific array element (node) and deletes it from the list.
public void delete(int index) throws IndexOutOfBoundsException {
if (index < noOfNodes) {
get(index);
recAddNode.prev.next = recAddNode.next;
recAddNode.next.prev = recAddNode.prev;
recAddNode.prev = null;
recAddNode.next = null;
} else {
throw new IndexOutOfBoundsException(“Index should be less than the number of nodes.”);
}
}
public void printArray(){
Node temp = head;
if(head.next == null){
System.out.println(“Empty Array!”);
return;
}
while(temp != null){
System.out.print(temp.get()+” “);
temp = temp.next;
}
}
}
============================================
public class Node {
private int element;
Node next;
Node prev;
public Node(int v){
this.element = v;
}
public Node(){
}
public int get(){
return this.element;
}
public void set(int v){
this.element = v;
}
}
Expert Answer
Java Code:
BetterArray.java:
public class TestBetterArray
{
public static void main(String[] args)
{
BetterArray array = new BetterArray(10);
int val;
System.out.println(“(a)Inserted numbers: “);
for (int i = 0; i < 10; i++) {
val = (int) (Math.random() * 10);
System.out.print(val+” “);
array.put(val, i);
}
System.out.println(“nnPrinting array elements:”);
for(int i=0; i<20; i++){
System.out.print(array.get(i)+” “);
}
array = new BetterArray(20);
System.out.println(“nn(b)Inserted numbers: “);
for (int i = 0; i < 20; i++) {
val = (int) (Math.random() * 20);
System.out.print(val+” “);
array.put(val, i);
}
// inserting 999 before 14th element
array.insert(999, 13);
System.out.println(“nnPrinting array elements:”);
for(int i=0; i<21; i++){
System.out.print(array.get(i)+” “);
}
}
}
TestBetterArray.java
public class TestBetterArray
{
public static void main(String[] args)
{
BetterArray array = new BetterArray(10);
int val;
System.out.println(“(a)Inserted numbers: “);
for (int i = 0; i < 10; i++) {
val = (int) (Math.random() * 10);
System.out.print(val+” “);
array.put(val, i);
}
System.out.println(“nnPrinting array elements:”);
for(int i=0; i<20; i++){
System.out.print(array.get(i)+” “);
}
array = new BetterArray(20);
System.out.println(“nn(b)Inserted numbers: “);
for (int i = 0; i < 20; i++) {
val = (int) (Math.random() * 20);
System.out.print(val+” “);
array.put(val, i);
}
// inserting 999 before 14th element
array.insert(999, 13);
System.out.println(“nnPrinting array elements:”);
for(int i=0; i<21; i++){
System.out.print(array.get(i)+” “);
}
}
}
Node.java:
public class Node {
private int element;
Node next;
Node prev;
public Node(int v){
this.element = v;
}
public Node(){
}
public int get(){
return this.element;
}
public void set(int v){
this.element = v;
}
}
Output-screenshot: