class Node<T>{
public T data;
public Node<T> next;
public Node() {}
public Node(T data) {
this.data = data;
}
}
public class MyList<T> {
private Node<T> head = new Node<T>();
public int nodeSize() {
int sum=0;
Node<T> p = new Node<T>();
p=head;
while(p.next!=null) {
sum++;
p=p.next;
}
return sum;
}
public void addNode(T data) {
Node<T> node = new Node<T>();
if(head.next==null) {
head.next=node;
node.data=data;
node.next=null;
}else {
Node<T> p = new Node<T>();
p=head;
while(p.next!=null) {
p=p.next;
}
p.next=node;
node.data=data;
node.next=null;
}
}
public void seeNode() {
Node<T> p = new Node<T>();
p=head;
while(p.next!=null) {
System.out.println(p.next.data);
p=p.next;
}
}
public void changeNode(int n,T data) {
int m=0;
Node<T> p = new Node<T>();
p=head;
while(p.next!=null) {
p=p.next;
if(n==m) {
p.data = data;
break;
}
m++;
}
}
public void deleteNode(int n) {
int m=0;
Node<T> p = new Node<T>();
p=head;
if(n==0) {
Node<T> q = new Node<T>();
q=p.next;
head.next=q.next;
}else{
while(p.next!=null) {
p=p.next;
if(n-1==m) {
break;
}
m++;
}
Node<T> q = new Node<T>();
q=p.next;
p.next=q.next;
}
}
public static void main(String[] args) {
MyList<Integer>myList= new MyList<Integer>();
myList.addNode(10);
myList.addNode(90);
myList.addNode(80);
myList.addNode(40);
myList.changeNode(0, 20);
myList.deleteNode(1);
System.out.println(myList.nodeSize());
myList.seeNode();
}
}