LinkedList cleanup

This commit is contained in:
Libkyy
2022-06-03 09:35:43 +02:00
parent 59ae9a425b
commit d6a1f874c0
2 changed files with 48 additions and 59 deletions

View File

@@ -1,92 +1,79 @@
package ScuffedLinkedList; package ScuffedLinkedList;
public class linkedlist { public class linkedlist
{
public node head; public node head;
public node tail; public node tail;
public int size; public int size;
<<<<<<< HEAD
linkedlist() linkedlist()
{ {
size = 0; size = 0;
=======
linkedlist() {
size = -1;
>>>>>>> aae40d7982df045ed4b77fc7a23e6e6ebb893eb7
} }
linkedlist(int value) { linkedlist(int value)
{
node inserted = new node(value); node inserted = new node(value);
this.head = inserted; this.head = inserted;
this.tail = inserted; this.tail = inserted;
<<<<<<< HEAD
size = 1;
=======
head.prev = tail; head.prev = tail;
tail.next = head; tail.next = head;
size = 1;
size = 0;
>>>>>>> aae40d7982df045ed4b77fc7a23e6e6ebb893eb7
} }
public node getNode(int index) { public node getNode(int index)
{
if (index == 0) if (index == 0) return head;
return head;
<<<<<<< HEAD else if (index == size - 1) return tail;
else if(index == size-1)
return tail;
else if(index > size/2) else
{ {
node current = tail;
for(int count = size-1; count > index; count--)
current = current.prev;
return current;
}
else if(index <= size/2)
{
=======
else if (index == size)
return tail;
else
{
>>>>>>> aae40d7982df045ed4b77fc7a23e6e6ebb893eb7
node current = head; node current = head;
for (int count = 0; count < index-1; count++) for (int i = 0; i < index; i++)
{
current = current.next; current = current.next;
}
return current; return current;
} }
} }
public void add(int value, int index) {
if (index == 0) {
public void add(int value, int index)
{
if (index == 0)
{
addFirst(value); addFirst(value);
} else if (index == size) { } else if (index == size)
{
addLast(value); addLast(value);
} } else
else { {
node inserted = new node(value); node inserted = new node(value);
node target = getNode(index); node target = getNode(index);
target.prev.next = inserted;
inserted.prev = target.prev;
inserted.next = target;
target.prev = inserted;
inserted.next = target.next;
inserted.prev = target;
target.next = inserted; size++;
} }
size++;
} }
public void addLast(int value) { public void addLast(int value)
{
node inserted = new node(value); node inserted = new node(value);
@@ -99,7 +86,8 @@ public class linkedlist {
size++; size++;
} }
public void addFirst(int value) { public void addFirst(int value)
{
node target = head; node target = head;
node inserted = new node(value); node inserted = new node(value);
@@ -113,20 +101,20 @@ public class linkedlist {
} }
public void delete(int index) { public void delete(int index)
{
node target = getNode(index); node target = getNode(index);
node prev, next; node prev, next;
prev = target.prev; prev = target.prev;
next = target.next; next = target.next;
if (prev == tail) if (prev == tail) head = next;
head = next;
else if (next == head) else if (next == head) tail = prev;
tail = prev;
else { else
{
prev.next = next; prev.next = next;
next.prev = prev; next.prev = prev;
} }
@@ -136,10 +124,10 @@ public class linkedlist {
public void spin2() public void spin2()
{ {
int count = 0; int count = 0;
while(count != 2) while (count != 2)
{ {
node temp = head; node temp = head;
while(temp.next != head) while (temp.next != head)
{ {
System.out.print(temp + " "); System.out.print(temp + " ");
temp = temp.next; temp = temp.next;
@@ -147,13 +135,14 @@ public class linkedlist {
count++; count++;
} }
} }
public void backwards() public void backwards()
{ {
int count = 0; int count = 0;
while(count != 2) while (count != 2)
{ {
node temp = tail; node temp = tail;
while(temp.prev != tail) while (temp.prev != tail)
{ {
System.out.print(temp + " "); System.out.print(temp + " ");
temp = temp.prev; temp = temp.prev;

View File

@@ -14,9 +14,9 @@ class linkedlistTest
L1.add(49,0); L1.add(49,0);
assertEquals(2,L1.size); assertEquals(2,L1.size);
assertEquals(50, L1.getNode(2).getValue()); assertEquals(50, L1.getNode(3).getValue());
L1.add(30,1); L1.add(30,1);
assertEquals(30, L1.getNode(2).getValue()); assertEquals(30, L1.getNode(1).getValue());
} }