wpc114



  • Steht da irgendwas von einem free oder delete?

    Darf ich mal kurz zitieren

    All non-deleted entries should be left intact in the same order as in the original list.

    Das einzige was unklar ist, ist ob num2 vor num1 kommen kann - und was man returnen soll.

    Alles andere steht doch da - oder habe ich etwas übersehen?



  • The function should delete all the nodes between the first occurrence of num1 in the list and the first occurrence of num2



  • wobei mit delete sicher nicht C++ delete gemeint ist. Gerade bei den WPC Fragestellungen würde es mich sehr wundern, wenn die so viel C++ könnten, dass die delete kennen (ich sag nur struct link *ptr; :))

    Ich geb ein Zeiger auf den zuerst gefundenen Eintrag zurück. Das erscheint mir am sinnvollsten und ich muss einfach nur return ptr; machen 🙂



  • also nicht im sinne von "speicher freigeben"? einfach nur die liste neu zusammensetzen.. bzw die werte zwischen num1 und num2 übergehen?

    ohne irgend ein c++ delete oder free() hm..

    dann bleib ich bei meiner ersten variante

    struct link *wpc114_(struct link *start, int num1, int num2)
    {
      struct link * element ;
    
      while ( start -> key != num1 )
        element = ++ start ;
    
      while ( element -> key != num2 )
        start -> next = ++ element ;
    
      return start; // mit diesem unterschied.. wäre dann die fundstelle von num1
    }
    


  • stahl schrieb:

    struct link *wpc114_(struct link *start, int num1, int num2)
    {
      struct link * element ;
    
      while ( start -> key != num1 )
        element = ++ start ;
    
      while ( element -> key != num2 )
        start -> next = ++ element ;
    
      return start; // mit diesem unterschied.. wäre dann die fundstelle von num1
    }
    

    Bist du dir sicher, dass du den code ernst meinst?



  • Wenn num1 an erster Stelle ist funktioniert der Code nicht...
    Wenn num2 vor num1 kommt funktioniert der Code nicht...

    MfG SideWinder



  • Bist du dir sicher, dass du den code ernst meinst?

    das hilft mir jetzt reichlich wenig. sag mir bitte direkt was
    dir da nicht passt 🙂



  • schade 😉



  • stahl schrieb:

    Bist du dir sicher, dass du den code ernst meinst?

    das hilft mir jetzt reichlich wenig. sag mir bitte direkt was
    dir da nicht passt 🙂

    Siehe Post von mir? 🙂

    MfG SideWinder



  • ich persönlich finde das ++ auf ein list node etwas komisch.
    da macht man normalerweise next - schliesslich ist es eine liste und kein array



  • Shade Of Mine schrieb:

    ich persönlich finde das ++ auf ein list node etwas komisch.

    Hihi, das sah so schön aus, hab ich glatt übersehen 😃

    MfG SideWinder



  • das sah auch ursprünglich mal so aus

    while ( element -> key != num2) 
        start -> next = element = element -> next ;
    

    das andere war halt kürzer..

    aber die zwei fälle hab ich nu wirklich nicht bedacht..
    falls num1 an erster stelle steht.. gut..
    dann einfach noch

    if ( start -> key == num1 )
        element = start ;
      else
    

    dazu.. und das num2 vor num1 kommt nehme ich einfach mal nicht an 😉
    jedenfalls noch nicht..



  • oh.. und dann könnten sie auch noch beide gleich sein..und und und 😉



  • Und schon bist du auf über 100 Tokens - also du musst noch was basteln *g*

    MfG SideWinder



  • bei ca. 153 😉

    nu darf aber num2 vor num1 kommen und beide dürfen gleich sein.. oh man..
    ach und natürlich darf auch einer von beiden am anfang stehen *g*



  • verdammt, beide gleich hab ich noch nicht berücksichtigt 😞

    wie viele Tokens habt ihr jetzt wirklich?



  • kingruedi schrieb:

    wie viele Tokens habt ihr jetzt wirklich?

    Habs vorhin eingeschickt - allerdings ungetestet, weil ich zu faul war.

    Ohne Funktionskopf und { und } - 36 Token

    Berücksichtigt aber weder num1==num2 noch num2 vor num1



  • num1==num2 macht ja eigentlich wenig Sinn oder soll dann das so aussehen?

    wpc114(link{1,10,-1,5,4,3},-1,-1);
    link[1] -> link[10] -> link[-1] -    / link[5] -> link[4] -> link[3]
                               ^     |
                               |     |
                                -----
    

    also das die letzten verloren gehen? Die erwarten ja sicher nicht, dass man selber dupliziert?

    @ShadeOfMine
    hmm, ich brauch für das gleiche 1 Token mehr 😞



  • wenn alles was wir hier so hatten berücksichtig werden soll komm ich auf
    122 😉

    ansonsten 36



  • argh, leider war ich zu dumm meinen Code abzuschicken. Aber der wär 14 Token kürzer, als der Gewinner Code (wenn ich mich nicht verzählt hab)

    struct link *wpc114(struct link *ptr,int num1,int num2) {
      while( !(ptr->key==num1 ||
               ptr->key==num2 && (num2=num1,1)) )
        ptr=ptr->next;
      while(ptr->next->key!=num2)
        ptr->next=ptr->next->next;
    
      return ptr;
    }
    

Anmelden zum Antworten