import java.util.*;
class ListNode{
int val;
ListNode next;
public ListNode() {
}
public ListNode(int val) {
this.val = val;
}
public ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
public class Main {
//合并有序链表
public static ListNode merge(ListNode n1,ListNode n2){
if(n1==null)
return n2;
else if(n2==null){
return n1;
}
else if(n1.val<n2.val){
n1.next=merge(n1.next,n2);
return n1;
}
else {
n2.next=merge(n1,n2.next);
return n2;
}
}
//头插法创建链表
public static ListNode create(ListNode head,int []nums){
ListNode p=new ListNode();
for (int i = 0; i <nums.length ; i++) {
ListNode node = new ListNode(nums[i]);
node.next=null;
if(head==null) {
head=node;
}else {
node.next=head;
head=node;
}
}
return head;
}
//尾插法创建链表
public static ListNode create2(ListNode head,int []nums){
ListNode p;
p=head;
for (int i = 0; i <nums.length ; i++) {
ListNode node = new ListNode(nums[i]);
node.next=null;
if(p==null) {
head=p=node;
}else {
p.next=node;
p=node;
}
}
return head;
}
public static void print(ListNode node){
while (node!=null){
System.out.print(node.val+" ");
node=node.next;
}
System.out.println();
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int []nums1=new int[n];
int []nums2=new int[n];
for (int i = 0; i <n ; i++) {
nums1[i]=in.nextInt();
}
for (int i = 0; i <n ; i++) {
nums2[i]=in.nextInt();
}
ListNode head=null;
ListNode node1 = create2(head, nums1);
print(node1);
head=null;
ListNode node2 = create2(head, nums2);;
print(node2);
ListNode merge = merge(node1, node2);
print(merge);
}
}
java-尾插法和头插法创建链表
最新推荐文章于 2023-07-22 20:47:08 发布