Java简单实现链表增删排

来源:互联网 发布:linux强制退出不保存 编辑:程序博客网 时间:2024/05/17 04:18

第一次用Java写算法实现,相比较C,不同free,用类代替结构体,只能用两个字形容:那酸爽~羡慕

package com.lqb.test;class LinkedList {Node head = null;                //添加节点public void addNode(int data) {Node node = new Node(data);if (head == null) {head = node;} else {//头插法// node.next = head.next;// head.next = node;Node temp = head;while (temp.next != null) {temp = temp.next;}temp.next = node;}}        //删除节点public void deleteNode(int index){if(index > 0 && index < length()){Node temp = head;int i = 2;if(index == 1){head = head.next;return;}while(i < index){temp = temp.next;i++;}Node deleteOne = temp.next;temp.next = deleteOne.next;// no need to free deleteOne 'cause GC works}}/** * 排序:把值对调就行了,第一次能把物理位置也换了的人只有我了 */public void orderList(){if(head == null)return;int length = length();int temp = 0;Node preNode = null;Node currentNode = null;for(int i = 1;i < length;i++){preNode = head;//应该在第一层循环赋值,在外面赋值导致空指针的人只有我了currentNode = head.next;for(int j = i+1;j <= length;j++){if(preNode.data > currentNode.data){temp = currentNode.data;currentNode.data = preNode.data;preNode.data = temp;}preNode = currentNode;currentNode = currentNode.next;}}}        //求长度public int length(){if(head == null)return 0;int length = 0;Node temp = head;while(temp != null){length++;temp = temp.next;}return length;}public void print() {Node temp = head;while (temp != null){System.out.println(temp.data);temp = temp.next;}}public static void main(String[] args) {LinkedList list = new LinkedList();list.addNode(6);list.addNode(2);list.addNode(9);list.addNode(4);list.addNode(7);list.addNode(1);list.addNode(5);list.print();System.out.println("********************");//System.out.println(list.length());list.deleteNode(4);list.print();System.out.println("********************");list.orderList();list.print();}}/** * Node节点 */class Node {Node next = null;int data;public Node(int data) {this.data  = data;}}




0 0
原创粉丝点击