O(1)时间复杂度删除链表元素

package lineartable;
/**
 * 链表节点类
 */
class Node{
    public String value;
    public Node next;
    public Node(String value){
        this.value=value;
        this.next=null;
    }
}
/**
 * 链表类
 */
public class LinkTable {
    public Node head;
    public LinkTable(Node node){
        this.head=node;
    }
    /**
     * 增加节点
     */
    public void addNode(Node node){
        Node end=head;
        while(end.next!=null){
            end=end.next;
        }
        end.next=node;
    }
    /**
     * 删除节点
     * 时间复杂度为O(1)无需遍历链表元素
     */
    public void delNode(Node node){
        node.value=node.next.value;
        node.next=node.next.next;
    }
    /**
     * 打印链表元素
     */
    public void print(){
        Node index=this.head;
        while(index!=null){
            System.out.print(index.value+"-->");
            index=index.next;
        }
        System.out.println("NULL");
    }
    
    public static void main(String [] args){
        LinkTable lt=new LinkTable(new Node("中国"));
        lt.addNode(new Node("美国"));
        Node japanNode=new Node("日本");
        lt.addNode(japanNode);
        lt.addNode(new Node("意大利"));
        lt.addNode(new Node("德国"));
        lt.addNode(new Node("荷兰"));
        lt.print();
        
        lt.delNode(japanNode);
        lt.print();
    }
}

/**
运行结果:
中国-->美国-->日本-->意大利-->德国-->荷兰-->NULL
中国-->美国-->意大利-->德国-->荷兰-->NULL
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值