@XQF
2018-03-07T22:49:24.000000Z
字数 1334
阅读 729
数据结构与算法
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());
}
}