1
public void setIntersection(LinkList list1, LinkList list2) {
    LinkList list4 = new LinkList();
    Node a = list1.head;
    Node b = list2.head;
    while (a != null && b != null) {
        if (a.value < b.value) {
            a = a.next;
        } else if (a.value > b.value) {
            b = b.next;
        } else if (a.value == b.value){
            list4.insert(a.value);
            a = a.next;
            b = b.next;
        }
    }
    list4.printList();
}

リスト1とリスト2に表示される共通の値を見つけて、リスト4にエントリを保存したいと思います。これは簡単に思えますが、コードが長すぎると感じており、この問題を解決するためのより効率的な方法があるかどうか疑問に思っています。

4

1 に答える 1

1
struct LinkList
{
     int data;
     struct LinkList *next;
}*list1,*list2,*list4;

public void setIntersection(LinkList *list1, LinkList *list2) 
{
    LinkList *temp, *temp1, *temp2, *node;
    for(temp1 = list1;temp1!=null;temp1=temp1->next)
    {
     enter code here    for(temp2 = list2;temp2!=null;temp2=temp2->next)
         {
              if(temp1->data == temp2->data)
              {
                  node = (struct LinkList *)malloc(sizeof(struct LinkList));
                  node->next = null;
                  if(list4==null)
                  {
                        list4 = node;
                  }
                  else
                  {
                        for(temp = list4;temp->next!=NULL;temp=temp->next);
                        temp->next = node;
                  }
              }
         }
    }
}
于 2012-02-14T10:13:45.700 に答える