@XQF
2018-03-07T14:49:24.000000Z
字数 1334
阅读 847
数据结构与算法
class ListNode {int val;ListNode next;public ListNode(int val) {this.val = val;}}class MyLinkedList {private ListNode head;public void add(ListNode node) {if (length() == 0) {head = node;} else {ListNode p = head;while (p.next != null) {p = p.next;}p.next = node;}}// 删除public boolean delete(int index) {ListNode p = head;if (length() == 0 || length() < index + 1) {return false;}int counter = 0;if (index == 0) {head = p.next;}//这里一定要熟练,主要是找前一个while (p.next != null) {if (counter == index - 1) {if (p.next.next != null) {p.next = p.next.next;} else {p.next = null;}break;} else {p = p.next;counter++;}}return true;}public int length() {int counter = 0;ListNode p = head;while (p != null) {counter++;p = p.next;}return counter;}//选择排序public ListNode sort() {ListNode p = head;ListNode q;while (p.next != null) {q = p.next;while (q != null) {if (p.val < q.val) {int temp = p.val;p.val = q.val;q.val = temp;}q = q.next;}p = p.next;}return head;}public void print() {ListNode p = head;while (p != null) {System.out.print(p.val + " ");p = p.next;}}}public class Test {public static void main(String[] args) {MyLinkedList list = new MyLinkedList();for (int i = 0; i < 10; i++) {list.add(new ListNode(i));}list.print();System.out.println();System.out.println("链表长度:" + list.length());if (list.delete(2)) {System.out.println("删除成功");}list.print();System.out.println();System.out.println("链表长度:" + list.length());list.sort();list.print();System.out.println();System.out.println("链表长度:" + list.length());}}
