码迷,mamicode.com
首页 > 编程语言 > 详细

算法(Algorithms)第4版 练习 1.3.26

时间:2017-03-06 22:15:47      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:3.2   first   int   stat   style   empty   who   pack   des   

方法实现:

//1.3.26
    /**
     * remove all of the nodes in the list that have key as its item field
     * 
     * @param list the linked list of T
     * @param key the T key
     * 
     * @return void
     * 
     */
    public static <T> void remove(LinkedList<T> list, T key) {
        Node<T> precurrent;
        precurrent = findPreNode(list, key);
        
        //remove all of the nodes
        while(precurrent.next != null) {
            
            if(precurrent.next == list.first)
                list.first = list.first.next;
            else
                precurrent.next = precurrent.next.next;
            
            precurrent = findPreNode(list, key);
        }
        
    }
    
    //1.3.26
    /**
     * find the node in the list whose item equals key
     * 
     * @param key the T key
     * 
     * @return return the previous node whose item equals key
     */
    private static <T> Node<T> findPreNode(LinkedList<T> list, T key) {
        Node<T> precurrent = new Node<T>();
        precurrent.next = list.first;
        
        while(precurrent.next != null && !precurrent.next.item.equals(key)) {
            precurrent = precurrent.next;
        }
        
        return precurrent;
    }

 

 

测试用例:

package com.qiusongde.linkedlist;

import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;

public class Exercise1326 {

    public static void main(String[] args) {
        
        String key = "to";
        
        LinkedList<String> list = new LinkedList<String>();
        
        while(!StdIn.isEmpty()) {
            String s = StdIn.readString();
            list.insertAtBeginning(s);
            StdOut.println("insertAtBeginning success: " + s);
            StdOut.println(list);
        }
        
        LinkedList.remove(list, key);
        StdOut.println("remove success:" + key);
        StdOut.println(list);
        
    }

}

 

 

输入数据:

to
be
or
not
to

 

 

结果1:

insertAtBeginning success: to
to 
insertAtBeginning success: be
be to 
insertAtBeginning success: or
or be to 
insertAtBeginning success: not
not or be to 
insertAtBeginning success: to
to not or be to 
remove success:to
not or be 

 

 

结果2:

insertAtBeginning success: to
to 
insertAtBeginning success: be
be to 
insertAtBeginning success: or
or be to 
insertAtBeginning success: not
not or be to 
insertAtBeginning success: to
to not or be to 
remove success:not
to or be to 

 

 

结果3:

insertAtBeginning success: to
to
insertAtBeginning success: be
be to
insertAtBeginning success: or
or be to
insertAtBeginning success: not
not or be to
insertAtBeginning success: to
to not or be to
remove success:qiu
to not or be to

 

算法(Algorithms)第4版 练习 1.3.26

标签:3.2   first   int   stat   style   empty   who   pack   des   

原文地址:http://www.cnblogs.com/songdechiu/p/6512182.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!