チェーン減算

2425 ワード

順序付きチェーンテーブルの減算の問題:
 
package org.jyjiao;
import java.util.*;

public class SubLinkList {

	/*
	 *     :  java LinkedList           ;              
	 * while(!(  ListA  ListB    )){   ListA     ListB   ,ListA    ;
	 *   ListA     ListB     ,ListB    ;
	 *   ListA     ListB     ,ListA      ,ListA       }
	 * 
	 */
	public void subLink(LinkedList<Integer> listA, LinkedList<Integer> listB) {
		Iterator<Integer> iterA = listA.iterator();
		Iterator<Integer> iterB = listB.iterator();

		int a = iterA.next().intValue();
		int b = iterB.next().intValue();
		while (true) {
			if (a < b) {
				while (a < b && iterA.hasNext()) {
					a = iterA.next().intValue();
				}
				if (a < b) {
					break;
				}
			} else if (a == b) {
				while (a == b && iterA.hasNext()) {
					iterA.remove();
					a = iterA.next().intValue();
				}
				if (a == b) {
					iterA.remove();
					break;
				}
			} else if (a > b) {
				while (a > b && iterB.hasNext()) {
					b = iterB.next().intValue();
				}
				if (a > b) {
					break;
				}
			}
		}

	}

	public static void main(String[] args) {
		SubLinkList subList = new SubLinkList();
		LinkedList listA = new LinkedList();
		LinkedList listB = new LinkedList();
		listA.add(new Integer(1));
		listA.add(new Integer(2));
		listA.add(new Integer(2));
		listA.add(new Integer(5));
		listA.add(new Integer(6));

		listB.add(new Integer(2));
		listB.add(new Integer(2));
		listB.add(new Integer(2));
		listB.add(new Integer(6));
		listB.add(new Integer(6));
		listB.add(new Integer(8));
		listB.add(new Integer(10));

		System.out.println("before sub:");
		System.out.println("listA:" + listA);
		System.out.println("listB:" + listB);
		System.out.println("-----------------------------");
		System.out.println("after sub:");
		subList.subLink(listA, listB);
		System.out.println("listA:" + listA);
		System.out.println("listB:" + listB);
	}

}