[LCP]linked list question
Joachim Bauernberger
bj at gmx.net
Tue Apr 2 18:16:05 UTC 2002
Hi,
I actually sent the message below already on Saturday but for some
reason lists.linux.org.au seemed to be down over the weekend...
Anyway I managed to solve the problem after making myself some drawings
and going over it with a big cup'o'coffee.
Thanks to anybody who would have helped.
Regards,
Joachim
Hi,
I have a problem with recursively reversing the items in a linked list.
The list items were first pushed into the list at the "head end" like
this:
void push(mbody_t *mes) {
int firstrun=1;
mbody_t *first = NULL;
while(foo) {
if (!firstrun) first=mes;
....
.....
firstrun=0;
mes->bnext = first;
}
}
Now I want to reverse the listitems in order to have the last item
first, etc ...
I have written this function that is supposed to do that:
static void
rreverse(mbody_t **mb)
{
mbody_t *first;
mbody_t *last;
if (*mb==NULL) return;
first = *mb;
last= first->bnext;
if (last==NULL) return;
rreverse(&last);
first->bnext->bnext = first;
first->bnext = NULL;
*mb = last;
return;
}
Now the problem ist that _only_ the last item in the list gets moved to
the first position and consecutive items are not processed anymore.
mbody_t looks like this:
typedef struct mbody_t
{
char *data;
char *dsum;
....
struct mbody_t *bnext;
}
mbody_t;
I can't find the problem. Can somebody tell me what I am missing?
Thanks & Regards,
Joachim
--
Disclaimer:
By sending an email to ANY of my addresses you are agreeing that:
1) I am by definition, "the intended recipient"
2) All information in the email is mine to do with as I see fit and
make such financial profit, political mileage, or good joke as it lends
itself to. In particular, I may quote it on usenet.
3) I may take the contents as representing the views of your company.
4) This overrides any disclaimer or statement of confidentiality that
may be included on your message.
More information about the linuxCprogramming
mailing list