(整理)Java实现链表----链表的反转

来源:互联网 发布:nginx 访问 403 编辑:程序博客网 时间:2024/04/29 12:27
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

0 0