有序表合并 java

数据结构里面的有序表合并

c++不太会,就用java来解决了

 

package 有序表合并;
import java.util.Scanner;
class Node {
int data;
Node next;
}
public class Linklist {
// 链表创建方法
static Node creat_list(int n) {
System.out.println("input "+n+" values:");
Scanner scn = new Scanner(System.in);
Node p, head = null,t = null;
for (int i = 0; i < n; i++) {
if(i==0){
head =new Node();
head.data=scn.nextInt();
head.next=null;
t=head;
continue;
}
p = new Node();
p.data = scn.nextInt();
p.next=null;
t.next = p;
t=p;
}
return head;
}
static Node merge_list(Node la, Node lb) {
Node pa, pb, pc=null,lc=null,pt;
pa = la;
pb = lb;
//lc = pc;
int i=0;
while ((pa != null) && (pb != null)) {
if(i==0) {
if (pa.data <= pb.data) {
pc = pa;
pa = pa.next;
} else {
pc = pb;
pb = pb.next;
}
lc=pc;
i++;
continue;
}
if (pa.data <= pb.data) {
pc.next = pa;
pc=pa;
pa = pa.next;
} else {
pc.next = pb;
pc=pb;
pb = pb.next;
}

}
pc.next = (pa==null)?pb:pa;
return lc;
}
// 链表打印输出方法
static void print_list(Node head) {
Node p;
p = head;
while (p != null) {
System.out.println("[" + p.data + "]");
p = p.next;
}
}
public static void main(String args[]) {
Node la, lb, lc;
int a,b;
Scanner as=new Scanner(System.in);
a=as.nextInt();
b=as.nextInt();
la = creat_list(a);
lb = creat_list(b);
lc = la;
print_list(merge_list(la, lb));
}

}

posted @ 2019-04-11 21:58  暴躁小榆  阅读(202)  评论(0编辑  收藏  举报