zoukankan      html  css  js  c++  java
  • 链表的基本实战

    public class ListNode {
        public int value;
        public ListNode next;
        
        public ListNode(int value) {
            this.value = value;
        }
    }
    /**
         * 头结点插入
         */
        public static void headInsert(ListNode head, ListNode newHead) {
            ListNode old = head;
            head = newHead;
            head.next = old;
        }
        
        /**
         * 尾节点插入
         */
        public static void tailInsert(ListNode tail, ListNode newTail) {
            ListNode old = tail;
            tail = newTail;
            old.next = tail;
            newTail.next = null;
        }
        
        /**
         * 遍历
         */
        public static void traverse(ListNode head) {
            while(head != null) {
                System.out.print(head.value+" ");
                head = head.next;
            }
            System.out.println();
        }
        
        /**
         * 查找
         */
        public static int find(ListNode head, int value) {
            int index = -1;
            int count = 0;
            while(head!=null) {
                if(head.value == value) {
                    index = count;
                    return count;
                }
                count++;
                head = head.next;
            }
            return index;
        }
        
        /**
         * 中间插入
         * @param oldNode
         * @param newNode
         */
        public static void insert(ListNode p, ListNode s) {
            ListNode next = p.next;
            p.next = s;
            s.next = next;
        }
        
        /**
         * 删除节点
         */
        public static void delete(ListNode head, ListNode q) {
            if(q != null) {
                if(q.next != null) {
                    ListNode p = q.next;
                    q.value = p.value;
                    q.next = p.next;
                    p = null;
                }else {//删除最后一个元素的情况
                    while(head != null) {
                        if(head.next != null && head.next == q) {
                            head.next = null;
                            break;
                        }
                        head = head.next;
                    }
                }
            }
        }
        
        public static void main(String[] args) {
            ListNode node1 = new ListNode(1);
            ListNode node2 = new ListNode(2);
            ListNode node3 = new ListNode(3);
            
            node1.next = node2;
            node2.next = node3;
            node3.next = null;
            traverse(node1);
            //头结点插入
            ListNode newHead = new ListNode(0);
            headInsert(node1, newHead);
            traverse(newHead);
            //尾节点插入
            ListNode newTail = new ListNode(4);
            tailInsert(node3, newTail);
            traverse(newHead);
            //中间节点插入
            ListNode node = new ListNode(5);
            insert(node2, node);
            traverse(newHead);
            //删除非尾节点
            delete(node1, node);
            traverse(newHead);
            //删除尾节点
            delete(newHead, newTail);
            traverse(newHead);
        }
  • 相关阅读:
    attr 修改IMG src
    64转2
    :eq
    DOM0和D0M2级事件
    c's's透明度
    span标签 宽度无效解决方案
    CSS 点击事件
    input点击后的 默认边框去除
    js
    CSS 的 ID 和 Class 有什么区别,如何正确使用它们。
  • 原文地址:https://www.cnblogs.com/cherish010/p/10569942.html
Copyright © 2011-2022 走看看