加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 07:46:53 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #include stdio.h#include stdlib.h#include string.h#include "utlist.h" #define BUFLEN 20 typedef struct el { char bname[BUFLEN]; struct el *n

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

#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 listn",count);
 
    memcpy(&etmp.bname,"WESn",5);
    DL_SEARCH(head,&etmp,namecmp);
    if (elt) printf("found %sn",elt->bname);
 
    /* now delete each element,use the safe iterator */
    DL_FOREACH_SAFE(head,tmp) {
      DL_DELETE(head,elt);
    }
 
    fclose(file);
 
    return 0;
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读