首页 > 编程语言 > 详细

有序表合并 java

时间:2019-04-11 22:44:51      阅读:156      评论:0      收藏:0      [点我收藏+]

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

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));
}

}

有序表合并 java

原文:https://www.cnblogs.com/shen-hao/p/10692900.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!