给定两个按元素值递增的有序顺序表A和B,集合的元素为30000以内的正整数,编写程序求A-B。
输入格式:
第一行输入两个表的表长 第二行输入第一个顺序表元素 第三行输入第二个顺序表元素
输出格式:
输出顺序表A中不在顺序表B中的元素个数。
输入样例:
5 5
1 2 3 4 5
3 4 5 6 7
输出样例:
2
代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int length1=input.nextInt();
int length2=input.nextInt();
singleLinkedList list1=new singleLinkedList();
singleLinkedList list2=new singleLinkedList();
int number;
while(length1>0){
number=input.nextInt();
LinkedList linkedList=new LinkedList(number);
list1.add(linkedList);
length1--;
}
while(length2>0){
number=input.nextInt();
LinkedList linkedList=new LinkedList(number);
list2.add(linkedList);
length2--;
}
System.out.print(list1.comparisonList(list2));
}
}
class singleLinkedList{
private LinkedList head=new LinkedList(0);
public void add(LinkedList newData){
LinkedList temp=head;
while (temp.next != null) {
temp = temp.next;
}
temp.next=newData;
}
public int comparisonList(singleLinkedList list){
LinkedList temp1=this.head;
LinkedList temp2=list.head;
int count=0;
while (temp1.next != null && temp2.next != null) {
if (temp1.next.data < temp2.next.data) {
count++;
temp1 = temp1.next;
} else if (temp1.next.data == temp2.next.data) {
temp1 = temp1.next;
temp2 = temp2.next;
} else {
temp2 = temp2.next;
}
}
while(true){
if(temp1.next==null){
break;
}else{
count++;
}
temp1=temp1.next;
}
return count;
}
}
class LinkedList {
public int data;
public LinkedList next;
public LinkedList(int Data) {
this.data = Data;
}
}