zoukankan      html  css  js  c++  java
  • c语言编程之sglib库的简单使用

    说实话自从大学毕业后已经很久没有用c语言写过程序了,一般都是使用c++,c++的stl和boost等,这些代码库大大简化了我们的编程复杂度。由于最近某种原因在次开始用c写程序。我是个比较懒的人,比较喜欢使用别人的第三方库,好不容易找到一个叫sglib的开源库,当然要使用一下啦。不多说。


    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include "sglib.h"

    typedef struct _ip_mask_map
    {
     int first;
     int second;
     struct _ip_mask_map* next;
    }ip_mask_map,*pip_mask_map;

    int ipcomp(ip_mask_map* elem1,ip_mask_map* elem2)
    {
     if ((elem1->first == elem2->first) &&
      (elem1->second == elem2->second))
     {
      return 0;
     }
     else
     {
      return 1;
     }
    }

    int main(int argc, char* argv[])
    {
     ip_mask_map *elem,*head=NULL,*_member;

     elem = (pip_mask_map)malloc(sizeof(ip_mask_map));
     elem->first = 1;
     elem->second = 100;
     elem->next = NULL;

     //添加elem到链表,如果指向链表的指针head为空时,将新元素elem赋值给head
     SGLIB_LIST_CONCAT(ip_mask_map,head,elem,next);

     elem = (pip_mask_map)malloc(sizeof(ip_mask_map));
     elem->first = 2;
     elem->second = 200;
     elem->next = NULL;

     SGLIB_LIST_CONCAT(ip_mask_map,head,elem,next);

     elem = (pip_mask_map)malloc(sizeof(ip_mask_map));
     elem->first = 2;
     elem->second = 200;
     elem->next = NULL;

     //如果成员已经在链表存在的话,_member返回指向那个成员的指针,否者返回NULL
     SGLIB_LIST_ADD_IF_NOT_MEMBER(ip_mask_map,head,elem,ipcomp,next,_member);
     
     if (_member != NULL)
      free(elem);

     //遍历并删除动态分配的内存
     for (elem = head; elem != NULL;)
     {
      pip_mask_map tmp = elem;
      printf("%d,%d ",elem->first,elem->second);
      elem = elem->next;
      free(tmp);
     }

     return 0;
    }

  • 相关阅读:
    二分查找递归和非递归版
    git常用命令记录
    总结下本周所学的建站流程极其经验
    Ubuntu下su命令失败的解决方法,及其环境变量失效解决
    ubuntu下node安装的三种方法
    Markdown学习及如何在博客园中使用
    nmcli使用方法
    Elasticsearch 升级 7.x 版本后,我感觉掉坑里了!
    Spring Data Elasticsearch基本操作自定义查询
    ElasticSearch——聚合
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3170371.html
Copyright © 2011-2022 走看看