Δημοσιεύτηκε: 22 Απρ 2011, 14:56
από Garrus
Εχω μια δομη απο nodes,και μια λιστα απο nodes, και θελω να ελεγξω ποτε τελειωνει η λιστα.
Το κανω με ελεγχο για while( node->next!=NULL) και καταληγω σε ατερμονο βροχο.
Κώδικας: Επιλογή όλων


node * p;
p=L->head;
while(p->next!=NULL){
//search and do stuff
p=p->next;
}

οπου τα nodes ειναι:
Κώδικας: Επιλογή όλων

typedef struct node{
int x,y; //coordinates
struct node * next; // for list manipulation
struct node * parent; //parent node
} node;

και κατασκευαζονται απο:

Κώδικας: Επιλογή όλων


node * makenode(int x, int y){ //args = coordinates
node * n;
n=(node *)malloc(sizeof(node));
n->x=x; n->y=y;
n->parent=NULL; n->next=NULL; //all pointers initialized to NULL
return n;

}


και εισερχονται σε μια λιστα με:

Κώδικας: Επιλογή όλων



void enlist(node * n, list * L){
if(isempty(L)){

L->head = n; // list head element
L->len ++; //list size
L->head->next = NULL;
}
else{
n->next = L->head;
L->head = n;
L->len++;

}
}



what's wrong?