您的位置:首页 > 其它

单向链表的删除及插入操作(以头插入法建立单向链表)

2015-10-05 22:08 507 查看
注意插入和删除操作中的限制约束条件。

class ListNode {
ListNode next;
int val;
public ListNode(int x) {
val = x;
}
}
public class LinkList {
private ListNode curr = null;
public void appendToHead(int d) {
ListNode tail = new ListNode(d);
tail.next = curr;
curr = tail;
}
public void printAppendToHead() {
while (curr != null) {
System.out.println(curr.val);
curr = curr.next;
}
}
public void delete(int d) throws Exception { //假设要删除的元素在该链表只出现一次。
if(curr == null) throw new Exception("empty LinkList");
if(curr.val == d) {curr = curr.next; return;}
ListNode tmp = curr;
while (tmp.next != null) {
if(tmp.next.val == d) {tmp.next = tmp.next.next; return;}
tmp = tmp.next;
}
return;
}
public void insert(int d) { //假设链表中的元素降序排列。
if(curr == null) {curr = new ListNode(d); return;}
if(d > curr.val) {
ListNode tmp = new ListNode(d);
tmp.next = curr;
curr = tmp;
return;
}
ListNode currTmp = curr;
while (currTmp.next != null) {
if(d > currTmp.next.val) {
ListNode tmp = new ListNode(d);
tmp.next = currTmp.next;
currTmp.next = tmp;
return;
}
currTmp = currTmp.next;
}
ListNode tmp = new ListNode(d);
currTmp.next = tmp;
return;
}

public static void main(String[] args) throws Exception {
int[] array = new int[] {1, 2, 2, 3, 4};
LinkList llist = new LinkList();
for (int i = 0; i < array.length; i++) {
llist.appendToHead(array[i]);
}
//        llist.delete(3);
llist.insert(0);
llist.printAppendToHead();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: