zoukankan      html  css  js  c++  java
  • Delete Node in a Linked List

    package cn.edu.xidian.sselab;

    import java.util.LinkedList;
    /**
     * title: Delete Node in a Linked List
     * content:
     *  Write a function to delete a node (except the tail) in a singly linked list,
     *  given only access to that node.
     *  Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3,
     *  the linked list should become 1 -> 2 -> 4 after calling your function.
     */
    public class DeleteNodeinaLinkedList {

        /**
         * @author wzy
         * @param args
         * @see 这个题是给定一个单链表,给你要删除的节点,然后目标是删除这个节点,维持单链表的其它都不变
         * 变量中只给定了要删除的节点,如果对其删除操作,因为单链表其前一个节点是不知道的,
         * 所以他的前一个节点就会找不到下一个节点,这种情况时不允许的。
         * 这里换一种思路,把要删除的节点A的下一个节点B的值赋给A,然后让A指向B的下一个节点,这样虽然删除的是规定节点的下一个节点
         * 但是删除的确实规定节点的值,所以满足要求
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            LinkedList<ListNode> list = new LinkedList<ListNode>();
            DeleteNodeinaLinkedList d = new DeleteNodeinaLinkedList();
            list.add(d.new ListNode(1));
            list.add(d.new ListNode(2));
            list.add(d.new ListNode(3));
            list.add(d.new ListNode(4));
            list.add(d.new ListNode(5));
            for(int i=0;i<4;i++){
                list.get(i).next = list.get(i + 1);
            }
            list.get(4).next = null;
            d.deleteNode(list.get(3));
            list.remove(3);
            System.out.println(list.size());
            for(int i=0;i<list.size();i++)
                System.out.println(list.get(i).val);
        }
        
        public class ListNode{
            int val;
            ListNode next;
            ListNode(int x){
                val = x;
            }
        }
        
        public void deleteNode(ListNode node){
            if(node != null || node.next != null){
                node.val = node.next.val;
                node.next = node.next.next;
            }
        }

    }

  • 相关阅读:
    Linux Bash
    grep 及正则表达式
    Linux 文件系统
    Linux 操作系统基础
    常见的磁盘I/O和网络I/O优化技巧
    NIO的工作方式
    网络I/O 工作机制
    spring Boot环境下dubbo+zookeeper的一个基础讲解与示例
    深入分析Java I/O 工作机制
    CDN工作机制和负载均衡
  • 原文地址:https://www.cnblogs.com/wzyxidian/p/4937587.html
Copyright © 2011-2022 走看看