方法实现:
- //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 void remove(LinkedList list, T key) {
- Node 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 Node findPreNode(LinkedList list, T key) {
- Node precurrent = new Node();
- 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 list = new LinkedList();
- 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
来源: http://www.bubuko.com/infodetail-1971700.html