Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [Opgelost]C++ Linked List class implementatie loopt vast  (gelezen 774 keer)

Offline Joshua822

  • Documentatieteam
  • Steunpunt: Nee
[Opgelost]C++ Linked List class implementatie loopt vast
« Gepost op: 2010/01/07, 18:58:56 »
Hallo iedereen.

Ik heb een probleem. Ik ben een class aan het schrijven waarmee ik makkelijk en generiek ( de enige voorwaarde is dat in elke struct er een pointer is met de identifier "next" ) linked lists kan beheren ( ja, er zijn veel betere implementaties beschikbaar op het internet, maar dit is gewoon voor educatieve doeleinden ).

Nu ja, ik heb al zo vaak linked lists geschreven dat ik ondertussen wel begrijp hoe ik de meeste standaard handelingen op deze op een goede manier moet uitvoeren.

#include <iostream>

struct node{
       unsigned short val;
       struct node* next;
};
template <class T> class linked_list{
                 T* baseptr;
                 T* pos;
         public:
                 linked_list(T * a){baseptr=new T;}
                 void tr(){
                      while(pos->next)pos=pos->next;
                 }
                 void gtn(unsigned short num){
                      pos=baseptr;
                      unsigned short i;
                      for(i=0;i<num;i++){
                                         if(pos->next)pos=pos->next;
                                         else break;
                      }
                 }
                 void addn(){
                      tr();
                      pos->next=new T;
                 }     
                 void addnb(unsigned short num){
                      gtn(num);
                      T* TempPtr=pos->next;
                      pos->next=new T;
                      pos->next->next=TempPtr;
                 }
                 void del(){
                      pos=baseptr;
                      while(pos){
                                 T* ToDel=pos;
                                 pos=pos->next;
                                 delete ToDel;
                      }
                 }
                 void deln(){
                      tr();
                      delete pos;
                 }
                 void delnb(unsigned short num){
                      gtn(num);               
                      T* TempPtr=pos->next->next;
                      delete pos->next;
                      pos->next=pos->next->next;
                 }     
};
int main(){
    struct node a;
    linked_list<struct node>ll(&a);
    ll.del();
    std::cout<<"I'm alive!!!"<<std::endl;
    std::getchar();
    return 0;
}

Ik denk dat er een probleem is met de tr() functie van de class, dat deze op een of andere manier oneindig loopt, want mijn controlepunt, "std::cout<<"I'm alive!!!"<<std::endl;", wordt niet bereikt, en een vastlopend declaratiestatement / constructor functie heb ik nog nooit meegemaakt.
« Laatst bewerkt op: 2010/01/09, 10:47:07 door Joshua822 »

Offline Joshua822

  • Documentatieteam
  • Steunpunt: Nee
Re: [C++]C++ Linked List class implementatie loopt vast
« Reactie #1 Gepost op: 2010/01/07, 19:36:51 »
Sorry voor de dubbelpost.

Het probleem blijkt, na wat meer debuggen, inderdaad in de functie tr() van de class linked_list te zitten. "std::cout" statements in deze functie worden niet uitgevoerd, in de constructor wel ( in de constructor heb ik deze instructie na de toewijzing van het dynamisch geheugen geplaatst ).

Offline Joshua822

  • Documentatieteam
  • Steunpunt: Nee
Re: [Opgelost]C++ Linked List class implementatie loopt vast
« Reactie #2 Gepost op: 2010/01/09, 10:47:55 »
Het probleem zit bij nader inzien toch niet in de code, maar in de IDE waar ik sinds kort mee werk ( Dev C++ ). Ik kan deze code perfect compileren en zoals gepland uitvoeren met Cygwin.