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


    注意插入和删除操作中的限制约束条件。

    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();
        }
    }
  • 相关阅读:
    [转帖]活用Quartus II内置模板,快速输入HDL代码、TimeQuset束缚及tcl语句等
    [笔记] FPGA的发展
    [转帖]状态机的编码
    [笔记]Altera中DDR3设计
    [笔记]Test Plan的编写 及 程序开头注释
    [HDOJ2457]DNA repair
    [HDOJ2355]The Sidewinder Sleeps Tonite
    [HDOJ2825]Wireless Password
    [HDOJ2222]Keywords Search
    [HDOJ2454]Degree Sequence of Graph G
  • 原文地址:https://www.cnblogs.com/lasclocker/p/4856360.html
Copyright © 2020-2023  润新知