import java.lang.annotation.Native;
import java.util.LinkedList;
class Node{
Node previousNode;
Object element;
Node nextNode;
public Node() {
// TODO Auto-generated constructor stub
previousNode = null;
element = null;
nextNode = null;
}
public Node(Object obj) {
element = obj;
}
public Node(Node pNode,Object eObject,Node nexNode) {
previousNode = pNode;
element = eObject;
nextNode = nexNode;
}
public boolean equals(Node n) {
if (element == n.element) {
return true;
}
return false;
}
public String toString() {
String str = “”+element;
return str;
}
}
public class swtLinkedList {
private Node firstNode;
private Node lastNode;
int size;
public void add(Object obj) {
Node neNode = new Node(obj);
if(firstNode==null) {
firstNode = neNode;
lastNode = neNode;
neNode.element = obj;
neNode.element = obj;
size++;
}else {
neNode.previousNode = lastNode;
lastNode.nextNode = neNode;
neNode.element = obj;
lastNode = neNode;
size++;
}
}
public Node getfirst() {
return firstNode;
}
public Node getlast() {
return lastNode;
}
public Node get(int index) {
if(index>=0&&index<size) {
int i = 0;
for (Node n = firstNode;n!=null;n = n.nextNode,i++) {
if(iindex&&n!=null) {
return n;
}
}
}
return null;
}
public void remove(int index) {
if(index>=0&&index<size) {
int i = 0;
Node n;
for (n = firstNode;n!=null;n = n.nextNode,i++) {
if(iindex&&n!=null) {
break;
}
}
if(n.equals(firstNode)) {
firstNode = n.nextNode;
lastNode = n.nextNode.previousNode;
size–;
}
if(n.equals(lastNode)) {
lastNode.previousNode.nextNode = firstNode;
lastNode = n.previousNode;
size–;
}
else {
Node pNode = n.previousNode;
Node nNode = n.nextNode;
n.nextNode = pNode.nextNode;
n.previousNode = nNode.previousNode;
size–;
}
}
}
public void set(Node k,int index) {
if(index>=0&&index<size) {
int i = 0;
Node n;
for (n = firstNode;n!=null;n = n.nextNode,i++) {
if(iindex&&n!=null) {
break;
}
}
k = n;
}
}
public int getSize() {
int count = 0;
for (Node n = firstNode;n!=lastNode;n = n.nextNode) {
count++;
}
count++;
return count;
}
public void insert(Node k,int index) {
if(index>=0&&index<=size) {
int i = 0;
Node n;
for (n = firstNode;n!=null;n = n.nextNode,i++) {
if(iindex&&n!=null) {
break;
}
}
if(i == 0) {
lastNode.nextNode = k;
k.nextNode = firstNode;
// Node f = firstNode;
// firstNode = k;
// k.nextNode = f;
firstNode.previousNode = k;
k.previousNode = lastNode;
Node f = firstNode;
firstNode = firstNode.previousNode;
size++;
}
if(i == size) {
lastNode.nextNode = k;
k.nextNode = firstNode;
lastNode = k;
firstNode.previousNode = k;
size++;
}
else {
n.previousNode.nextNode = k;
k.nextNode = n;
k.previousNode = n.previousNode;
n.previousNode = k;
size++;
}
}
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(’[’);
int i = 0;
for (Node n = firstNode;n != lastNode&&i<size;n = n.nextNode,i++) {
sb.append(n.element+",");
}
sb.append(lastNode.element+"]");
//sb.setCharAt(sb.length()-1, ‘]’);
return sb.toString();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
swtLinkedList s = new swtLinkedList();
s.add(“a0”);
s.add(“a1”);
s.add(“a2”);
System.out.println(s.toString());
System.out.println(s.getfirst().element);
System.out.println(s.getlast().element);
System.out.println(s.get(1).element);
s.insert(new Node(“a3”),0);
//s.remove(1);
System.out.println(s.getSize());
System.out.println(s.getfirst());
System.out.println(s.toString());
}
}