2017-11-15 4 views
0

두 개의 목록을 참조로 사용하는 혼합 방법을 만들었습니다. 내가 목록 3을 반환하는 것보다 목록 1과 2를 할당하는 혼합 목록 (3)을 만들었습니다.힙에 일치하는 함수가 없습니다.

구현하려고 할 때 스택에서 작동하지만 힙에서는 작동하지 않습니다. 가능한 문제가 있습니까?

(sth3 = sth3-> mix (sth1, sth2);) - 일치하는 함수 문제가 없습니다.

작동하지 :

Sequence<int,string> *sth1 = new Sequence<int,string>(); 
    sth1->AddNode(1,"n1"); 
    sth1->AddNode(2,"n2"); 

    Sequence<int,string> *sth2 = new Sequence<int,string>(); 
    sth2->AddNode(10,"n1"); 

    Sequence<int,string> *sth3 = new Sequence<int,string>(); 
    sth3 = sth3->mix(sth1,sth2); 
    sth3->Print(); 

한 작업 :

Sequence<int,string> st1; 
    st1.AddNode(1,"n1"); 

    Sequence<int,string> st2; 
    st2.AddNode(10,"n1"); 

    Sequence<int,string> st3; 
    st3 = st3.mix(st1,st2); 
    st3.Print(); 

단순화 된 기능 믹스 (..) 힙 하나에서

template<typename key,typename info> 
Sequence<key, info> Sequence<key, info>::mix(const Sequence<key, info> &s1, const Sequence<key,info> &s2) 
{ 
      Sequence<key,info> s; 
      Node<key, info> *curr1 = s1.head; 
      Node<key, info> *curr2 = s2.head; 

      while (s.count < 10) 
      { 
       s.AddNode(curr1->GetId(), curr1->GetData()) 
       curr1 = curr1->GetNext(); 
       s.AddNode(curr2->GetId(), curr2->GetData()) 
       curr2 = curr2->GetNext(); 

       if (curr1 == NULL && curr2 == NULL) 
        break; 

      } 

    return s; 
} 
+2

최소한의 예는 달콤 할 것입니다. – gsamaras

+0

@gsamaras 혼합 함수의 단순화 된 구현을 추가했습니다. – sswwqqaa

답변

2

변경 sth3 = sth3->mix(sth1,sth2)에서 *sth3 = sth3->mix(*sth1,*sth2)으로 변경하십시오.

+0

변경 후 오류가 발생했습니다. 'class Sequence >'sth3 '이라는 멤버가 없습니다. 그래서 나는 그렇지 않다고 생각한다. – sswwqqaa

+0

귀하의 의견을 이해가되지 않습니다! – goodvibration

+0

'* sth3 = sth3-> mix (* sth1, * sth2)를 실행 한 후'class Sequence > '에'sth3'이라는 이름의 멤버가 없습니다. 오류. – sswwqqaa

0

을, 당신은 함수에 대한 포인터를 제공하고 있습니다 참조를 기대한다면, 당신은 그것들을 경감해야합니다.

관련 문제