Skip to content
Snippets Groups Projects
Commit ed83eae0 authored by Ivan's avatar Ivan
Browse files

OurLinkedList c bon

parent 4fa6e9bd
Branches
No related merge requests found
public class Cursor<T> {
private Link<T> current;
private int pos;
}
public class Link<T> {
private T value;
private Link<T> next;
private Link<T> previous;
}
import java.util.List;
import java.util.Random;
public class OurLinkedList implements Structure {
public class Link<T> {
int value;
Link next;
Link previous;
public Link(Integer value, Link next, Link previous) {
this.value = value;
this.next = next;
this.previous = previous;
}
}
public class OurLinkedList<T> implements Structure {
private Maillon cursor;
public class Cursor {
OurLinkedList list;
Link link;
int pos;
public void next() {
cursor = cursor.next;
}
public Cursor(OurLinkedList list, Link link) {
this.link = link;
this.list = list;
pos = 0;
}
public void previous() {
cursor = cursor.previous;
}
public void moveTo(int pos) {
}
public void goFor() {
if (pos == list.nbVal - 1)
pos = 0;
else
pos++;
link = link.next;
}
@Override
public void insertQueue(Object elem) {
public void goBack() {
if (pos == 0)
pos = list.nbVal - 1;
else
pos--;
link = link.previous;
}
public void setPos(int pos) {
if(this.pos > pos) {
goBack();
} else {
goFor();
}
setPos(pos);
}
}
@Override
public void insertRandom(Object elem) {
Link sentinel;
int nbVal;
Cursor cursor;
Random r = new Random();
public OurLinkedList() {
sentinel = new Link(null, sentinel, sentinel);
cursor = new Cursor(this, sentinel.previous);
nbVal = 0;
}
public boolean isEmpty() { return nbVal == 0;}
@Override
public void insertHead(Object elem) {
public int get(int pos) {
if(pos < 0 || pos >= nbVal|| isEmpty()) {
throw new IndexOutOfBoundsException("elem : mauvaise position du curseur");
}
int depart = cursor.pos;
cursor.setPos(pos);
int res = cursor.link.value;
cursor.setPos(depart);
return res;
}
private void insert(int pos, int val) {
if(pos < 0 || pos > nbVal || isEmpty()) {
throw new IndexOutOfBoundsException("elem : mauvaise position du curseur");
}
int depart = cursor.pos;
cursor.setPos(pos);
Link link = new Link(val, cursor.link.next, cursor.link);
cursor.link.next.previous = link;
cursor.link.next = link;
cursor.setPos(depart);
}
@Override
public void remove(int pos) {
public void insertQueue(int elem) {
insert(nbVal - 1, elem);
}
@Override
public void get(int pos) {
public void insertRandom(int elem) {
insert(r.nextInt(nbVal), elem);
}
private class Maillon<T> {
private T value;
@Override
public void insertHead(int elem) {
insert(0, elem);
}
Maillon(T v, Maillon n, Maillon p) {
value = v;
next = n;
previous = p;
@Override
public void remove(int pos) {
if(pos < 0 || pos > nbVal || isEmpty()) {
throw new IndexOutOfBoundsException("elem : mauvaise position du curseur");
}
Maillon next;
Maillon previous;
int depart = cursor.pos;
cursor.setPos(pos);
cursor.link.previous.next = cursor.link.next;
cursor.link.next.previous = cursor.link.previous;
cursor.setPos(depart);
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment