import java.util.*;
class Node{
Node next = null;
int data;
public Node(int data){
this.data = data;
}
}
public class MyLinkedList {
Node head = null;
public void addNode(int d){
Node newNode = new Node(d);
if(head == null){
head = newNode;
return;
}
Node tmp = head;
while(tmp.next != null){
tmp = tmp.next;
}
tmp.next = newNode;
}
public Boolean deleteNode(int index){
if(index<1||index>length()){
return false;
}
if(index == 1){
head = head.next;
return true;
}
int i = 2;
Node preNode = head;
Node curNode = preNode.next;
while(curNode != null){
if(i == index){
preNode.next = curNode.next;
return true;
}
preNode = curNode;
curNode = curNode.next;
i++;
}
return true;
}
public int length(){
int length = 0;
Node tmp = head;
while(tmp != null){
length++;
tmp = tmp.next;
}
return length;
}
public void printList(){
Node tmp = head;
while(tmp != null){
System.out.println(tmp.data);
tmp = tmp.next;
}
}
public Node findNode(int index){
int i;
Node p = this.head;
for(i = 1; i<index; i++){
p = p.next;
}
return p;
}
public void ReverseIteratively(){
Node head = this.head;
Node pReversedHead = head;
Node pNode = head;
Node pPre = null;
while(pNode != null){
Node pNext = pNode.next;
if(pNext == null){
pReversedHead = pNode;
}
pNode.next = pPre;
pPre = pNode;
pNode = pNext;
}
this.head = pReversedHead;
}
public static void main(String[] args){
MyLinkedList list = new MyLinkedList();
while(true){
Scanner s = new Scanner(System.in);
String cz = s.next();
if(cz.equals("add"))
{
int data = s.nextInt();
list.addNode(data);
list.printList();
}
else if(cz.equals("del"))
{
int index = s.nextInt();
list.deleteNode(index);
list.printList();
}
else if(cz.equals("len"))
{
System.out.println("Len= "+list.length());
}
else if(cz.equals("R"))
{
list.ReverseIteratively();
list.printList();
}
}
}
}
测试数据:
add 1
1
add 2
1
2
add 3
1
2
3
add 4
1
2
3
4
R
4
3
2
1