I will wait for someone who likes to pick on me to attempt compiling it since I am not at home atm.
You should be able to use the above like this.
Example:
Code:
#include <string.h>
#include <stdio.h>
#include <ctype.h>
typedef struct NODE {
struct NODE *next;
struct NODE *prev;
char name[];
} Person;
Person *person(Person *node, const char *name);
void destroy(Person *node);
void print(Person *node);
int main(void)
{
char buffer[64] = {0};
Person *node = 0;
puts("Please put in a name (or 'Q' to quit): ");
while(fgets(buffer, sizeof(buffer), stdin))
{
strtok(buffer, "\n");
if(toupper(buffer[0]) == 'Q')
break;
node = person(node, buffer);
puts("Put in another name (or 'Q' to quit): ");
};
print(node);
destroy(node);
return 0;
}
void destory(Person *node)
{
Person *head = node;
for(;head->prev; head = head->prev) { }
for(node = head; node; node = head)
{
head = node->next;
free(node);
}
}
void print(Person *node)
{
Person *head = node;
int i = 1;
for(;head->prev; head = head->prev) { }
for(node = head; node; node = head, ++i)
{
head = node->next;
printf("%02d. %s\n", i, node->name);
}
}