2017-04-21 30 views
-1

我想确定两个单链表是否相同。 如果它们相同,程序应该打印匹配的字母。确定两个单链表是否相同?

例如: 杂音和牙垢是相同的,因为它们都具有相同的模式“abcabc”。

AAABBCbbaaa和11122322111相同

匹配的字母: 甲↔1 乙↔2 ç↔3

我必须仅使用单链接列表。

public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 
    System.out.print("Please enter a string:"); 
    String linked1=scanner.nextLine(); 
    System.out.println(); 
    System.out.print("Please enter another string:"); 
    String linked2=scanner.nextLine(); 

    SingleLinkedList SLL1 = new SingleLinkedList(); 
    SingleLinkedList SLL2 = new SingleLinkedList(); 


    for (int i = 0; i < linked1.length(); i++) { 
     char a=linked1.charAt(i); 
     a = Character.toLowerCase(a); 
     SLL1.addToEnd(a); 
    } 
    for (int i = 0; i < linked2.length(); i++) { 
     char a=linked2.charAt(i); 
     a = Character.toLowerCase(a); 
     SLL2.addToEnd(a); 
    } 


public class SingleLinkedList{ 

private Node head; 

public SingleLinkedList() 
{ 
    head = null; 
} 

public boolean isEmpty(){ 
    return head == null; 
} 
public void addToEnd(Object dataToAdd) 
{ 
    Node newNode = new Node(dataToAdd); 

    if(head == null) 
    { 
     head = newNode; 
    } 
    else 
    { 
     Node temp = head; 

     while(temp.getLink() != null) 
     { 
      temp = temp.getLink(); 
     } 

     temp.setLink(newNode); 
    } 
} 
public String display() 
{ 
    String output = ""; 

    Node temp = head; 

    while(temp != null) 
    { 
     output += temp.getData() + " "; 
     temp = temp.getLink(); 
    } 

    return output; 
} 

}

+0

那么你到目前为止尝试过什么? –

+0

我试过创建2临时单链接ist然后,我想删除字符到这个临时工。但顺序是重要的,我不能正确地做出。做得很好 –

+0

你到目前为止试图比较两个列表是否相等?我们可以帮助您解决遇到的问题,但首先您必须尝试一些方法。请参阅http://stackoverflow.com/help/on-topic:“要求提供家庭作业帮助的问题必须包括您迄今为止解决问题所做的工作摘要,以及您解决问题的难度的描述“。 –

回答

0

你可以做到这一点,但它是一个单调乏味的工作,我没有写的实际代码的实力。

你应该编码(不是加密)你的序列。

一个简单的编码你的列表的方法是迭代它的值,你选择的每个值必须根据已经遇到的值的seq进行检查。

如果该值不在检查序列中,则将其添加并继续。

在此结束时,您将找到一个seq独特的值,因为您发现它们。

然后,对于您的seq的每个元素,您会发现哪个位置在您的检查集中,并构建这些职位的新seq。

您可以重复使用这两个序列,然后您就可以匹配您的编码序列。

你应该为你的seq创建一个indexOf方法来简化你的程序。

+0

感谢您的回答。我会尝试你的方向。 –