| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
bcf2
10年前发布

C语言使用utlist实现的双向链表

utlist 下载地址:https://github.com/troydhanson/uthash

#include <stdio.h>  #include <stdlib.h>  #include <string.h>  #include "utlist.h"     #define BUFLEN 20     typedef struct el {      char bname[BUFLEN];      struct el *next, *prev;  } el;     int namecmp(el *a, el *b) {      return strcmp(a->bname,b->bname);  }     el *head = NULL; /* important- initialize to NULL! */     int main(int argc, char *argv[]) {      el *name, *elt, *tmp, etmp;         char linebuf[BUFLEN];      int count;      FILE *file;         if ( (file = fopen( "test11.dat", "r" )) == NULL ) {          perror("can't open: ");          exit(-1);      }         while (fgets(linebuf,BUFLEN,file) != NULL) {          if ( (name = (el*)malloc(sizeof(el))) == NULL) exit(-1);          strncpy(name->bname,linebuf,BUFLEN);          DL_APPEND(head, name);      }      DL_SORT(head, namecmp);      DL_FOREACH(head,elt) printf("%s", elt->bname);      DL_COUNT(head, elt, count);      printf("%d number of elements in list\n", count);         memcpy(&etmp.bname, "WES\n", 5);      DL_SEARCH(head,elt,&etmp,namecmp);      if (elt) printf("found %s\n", elt->bname);         /* now delete each element, use the safe iterator */      DL_FOREACH_SAFE(head,elt,tmp) {        DL_DELETE(head,elt);      }         fclose(file);         return 0;  }