算法-第四版-练习1.3.25解答

问题

编写一个方法insertAfter(),接受两个链表结点作为参数,将第二结点插入链表并使之成为第一个结点的后续结点(如果两个参数为空则什么也不做)。

解决思路

插入过程保持后续连接正常。

代码

    public void insertAfter(Node<Item> pos, Node<Item> node)
    {
        if (node == null || pos == node) 
            return;
        node.next = pos.next;
        pos.next = node;
    }

测试代码:

/**
 * Description : 
 * Author      : mn@furzoom.com
 * Date        : Oct 25, 2016 10:07:50 AM
 * Copyright (c) 2013-2016, http://furzoom.com All Rights Reserved.
 */
package com.furzoom.lab.algs.ch103;

/**
 * ClassName    : E10325 <br>
 * Function     : TODO ADD FUNCTION. <br>
 * date         : Oct 25, 2016 10:07:50 AM <br>
 * 
 * @version 
 */
public class E10325
{
    public static void main(String[] args)
    {
        LinkList<String> ll = new LinkList<String>();
        ll.append("a");
        ll.append("B");
        ll.append("c");
        ll.append("D");
        ll.append("e");
        
        ll.printList();
        
        Node<String> node = null;
        Node<String> pos = null;
        ll.insertAfter(pos, node);
        System.out.println("insertAfter(null, null) : ");
        ll.printList();
        
        pos = ll.search("e");
        ll.insertAfter(pos, node);
        System.out.println("insertAfter(\"e\", null): ");
        ll.printList();
        
        node = new Node<String>();
        node.item = "F";
        ll.insertAfter(pos, node);
        System.out.println("insertAfter(\"e\", \"F\"): ");
        ll.printList();
        
        pos = ll.search("c");
        node = new Node<String>();
        node.item = "X";
        ll.insertAfter(pos, node);
        System.out.println("insertAfter(\"c\", \"X\"): ");
        ll.printList();
        
    }
}

结果:

a
B
c
D
e
insertAfter(null, null) : 
a
B
c
D
e
insertAfter("e", null): 
a
B
c
D
e
insertAfter("e", "F"): 
a
B
c
D
e
F
insertAfter("c", "X"): 
a
B
c
X
D
e
F



算法-第四版-1.3 背包、队列和栈-习题索引汇总

算法-第四版习题索引汇总


posted @ 2017-10-22 15:50  枫竹梦  阅读(138)  评论(0编辑  收藏  举报