Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
!*.java

124 changes: 124 additions & 0 deletions list/.idea/uiDesigner.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions list/.idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

113 changes: 113 additions & 0 deletions list/src/LinkApp.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
import lists.DSideLinkedList;
import lists.Iterator;
import lists.LinkedList;
import lists.List;

public class LinkApp {
public static void main(String[] argv) {
// test LinkedList
testLinkedList();

// test DSideLinkedList
testDSideLinkedList();

// test Iterator
testIterator();
}

static void testLinkedList() {
System.out.println("------ Test LinkedList ------");

List list = new LinkedList();

list.insert("A", 12);
list.insert("B", 32);
list.insert("C", 2);
list.insert("D", 15);
list.insert("E", 7);
list.insert("F", 22);
list.insert("G", 77);
list.display();

System.out.println();

list.delete();
list.display();

System.out.println();

list.delete("D");
list.display();

System.out.println();

System.out.println(list.find("E"));
System.out.println();

System.out.println(list.find("D"));
System.out.println();
}

static void testDSideLinkedList() {
System.out.println("------ Test DSideLinkedList ------");

DSideLinkedList dlist = new DSideLinkedList();

dlist.insert("AA",11);
dlist.insert("BB",22);
dlist.insert("DD",33);
dlist.display();

System.out.println();

dlist.insertLast("EE",44);
dlist.insertLast("FF",55);
dlist.display();

System.out.println();

dlist.delete("EE");
dlist.display();

System.out.println();
}

static void testIterator() {
System.out.println("------ Test Iterator ------");

List list = new LinkedList();
Iterator iterator = new Iterator(list);

System.out.println(iterator.getCurrent());

iterator.nextLink();
System.out.println(iterator.getCurrent());

System.out.println(iterator.atEnd());

iterator.deleteCurrent();
System.out.println(iterator.getCurrent());

iterator.reset();
System.out.println(iterator.getCurrent());

System.out.println();

iterator.insertAfter("AA", 11);
iterator.insertAfter("BB", 22);
iterator.insertAfter("CC", 33);
iterator.insertAfter("DD", 44);
iterator.insertAfter("EE", 55);
list.display();

System.out.println();

iterator.reset();
iterator.nextLink();
iterator.nextLink();
iterator.nextLink();
iterator.insertBefore("XX", 0);
iterator.insertBefore("ZZ", 0);
list.display();
}
}
33 changes: 33 additions & 0 deletions list/src/lists/DSideLinkedList.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package lists;

public class DSideLinkedList extends List {

private Link last;

@Override
public void insert(String name, int age) {
Link newLink = new Link(name, age);

if (first == null) {
last = newLink;
}
else {
newLink.next = first;
}

first = newLink;
}

public void insertLast(String name, int age) {
Link newLink = new Link(name, age);

if (last == null) {
first = newLink;
}
else {
last.next = newLink;
}

last = newLink;
}
}
18 changes: 18 additions & 0 deletions list/src/lists/IIterator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package lists;

interface IIterator {

void reset();

void nextLink();

Link getCurrent();

boolean atEnd();

void insertAfter(String name, int age);

void insertBefore(String name, int age);

String deleteCurrent();
}
91 changes: 91 additions & 0 deletions list/src/lists/Iterator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
package lists;

public class Iterator implements IIterator {

private List list;

private Link current;
private Link previous;

public Iterator(List _list) {
list = _list;

current = list.getFirst();
previous = null;
}

@Override
public void reset() {
current = list.getFirst();
previous = null;
}

@Override
public void nextLink() {
if (current == null) {
return;
}

previous = current;
current = current.next;
}

@Override
public Link getCurrent() {
return current;
}

@Override
public boolean atEnd() {
return (current == null ? true : current.next == null);
}

@Override
public void insertAfter(String name, int age) {
Link newLink = new Link(name, age);

if (current == null) {
list.setFirst(newLink);
}
else {
previous = current;

newLink.next = current.next;
current.next = newLink;
}

current = newLink;
}

@Override
public void insertBefore(String name, int age) {
Link newLink = new Link(name, age);

if (current == null) {
list.setFirst(newLink);
}
else {
previous.next = newLink;
newLink.next = current;
}

current = newLink;
}

@Override
public String deleteCurrent() {
String name = null;

if (current == null) {
return null;
}

name = current.name;

if (atEnd() != true) {
previous.next = current.next;
}

return name;
}
}
Loading