算法-第四版-练习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
作者:马 岩(Furzoom) (http://www.cnblogs.com/furzoom/)
版权声明:本文的版权归作者与博客园共同所有。转载时请在明显地方注明本文的详细链接,未经作者同意请不要删除此段声明,感谢您为保护知识产权做出的贡献。
版权声明:本文的版权归作者与博客园共同所有。转载时请在明显地方注明本文的详细链接,未经作者同意请不要删除此段声明,感谢您为保护知识产权做出的贡献。