#include #include #include #include "utlist.h" #define BUFLEN 20 typedef struct el { char bname[BUFLEN]; struct el *next, *prev; } el; static int namecmp(void *_a, void *_b) { el *a = (el*)_a; el *b = (el*)_b; return strcmp(a->bname,b->bname); } int main() { el *name, *tmp; el *head = NULL; char linebuf[BUFLEN]; FILE *file; file = fopen( "test11.dat", "r" ); if (file == NULL) { perror("can't open: "); exit(-1); } while (fgets(linebuf,BUFLEN,file) != NULL) { name = (el*)malloc(sizeof(el)); if (name == NULL) { exit(-1); } strcpy(name->bname, linebuf); DL_APPEND(head, name); } DL_SORT(head, namecmp); DL_FOREACH(head,tmp) { printf("%s", tmp->bname); } /* now delete the list head */ printf("deleting head %shead->prev: %s", head->bname, head->prev->bname); DL_DELETE(head,head); DL_FOREACH(head,tmp) { printf("%s", tmp->bname); } fclose(file); return 0; }