0
我想编写代码来合并两个排序列表并在另一个列表中显示。合并两个排序的Lnkedlist并在一个新的链接列表中打印
我已经创建了一个函数“Merge”,它将每个List的头部作为它的两个参数并返回新List的头部。我创建了“Display”函数,它需要“列表头部”来显示内部的内容它。 问题是当我试图显示新列表的内容时,它显示Nothing。 这是我的主要功能。
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Linkedlist o=new Linkedlist();
Linkedlist o1=new Linkedlist();
Linkedlist o2=new Linkedlist();
o.insertAtlast(5);
o.insertAtlast(10);
o.insertAtlast(15);
o1.insertAtlast(2);
o1.insertAtlast(3);
o1.insertAtlast(20);
o2.head=o2.mergeList(o.head, o1.head);
o2.Display(o2.head);
}
}
and this is my Linkedlist Class
public class Linkedlist {
static class Node{
int data;
Node link;
public Node(int data) {
this.data=data;
this.link=null;
}
}
Node head=null;
public void insertAtlast(int data) {
Node node=new Node(data);
if(head==null)
head=node;
else
{
Node ptr=head;
while(ptr.link!=null)
ptr=ptr.link;
ptr.link=node;
}
}
public void Display(Node node) {
while(node!=null) {
System.out.println(node.data);
node=node.link;
}
}
public Node mergeList(Node head1,Node head2) {
Node head3=null;
if(head1==null)
head=head2;
else if(head2==null)
head=head1;
else {
while(head1!=null && head2!=null) {
if(head==null) {
if(head2.data<head1.data) {
Node node=new Node(head2.data);
head=node;
head2=head2.link;
}
else {
Node node=new Node(head1.data);
head=node;
head1=head1.link;
}
}
else
{
head3=head;
while(head3.link!=null)
head=head3.link;
if(head2.data<head1.data) {
Node node=new Node(head2.data);
head3.link=node;
head2=head2.link;
}
else {
Node node=new Node(head1.data);
head3.link=node;
head1=head1.link;
}
}
}
}
return head;
}
}
欢迎堆栈溢出!你已经在你的问题中发布了很多代码,这使得我们(以及未来的读者)不清楚问题出在哪里。请将您的问题代码减少到10行或更少。请参阅:[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)和[如何调试小程序](https://ericlippert.com/2014/03/05 /如何调试的小程序/)。 –