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.
[cpp]
#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::getchar();
return 0;
}[/cpp]
Ik denk dat er een probleem is met de tr() functie van de class, dat deze op een of andere manier oneindig loopt, want als ik in de verschillende functies een controle "std::cout" statement uitvoer, krijg ik de uitvoer wel, maar alleen niet bij de functie tr() van de class.
Alvast bedankt voor het meedenken !
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.
[cpp]
#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::getchar();
return 0;
}[/cpp]
Ik denk dat er een probleem is met de tr() functie van de class, dat deze op een of andere manier oneindig loopt, want als ik in de verschillende functies een controle "std::cout" statement uitvoer, krijg ik de uitvoer wel, maar alleen niet bij de functie tr() van de class.
Alvast bedankt voor het meedenken !
Laatst bewerkt door een moderator: