免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2555 | 回复: 1
打印 上一主题 下一主题

list_head 使用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-15 23:54 |只看该作者 |倒序浏览
现在有这样的结构体关系:

struct ip_port {
    u32_t ip;
    struct port_info *port;
    /* 其他数据 */
};

struct port_info {
    u16_t port_num;
    /* 其他数据 */
    struct list_head list;
};

想建立以ip_port 为头结点的端口链表, 用list_head 来做。是不是这样就可以:
struct ip_port g_list = { xx, NULL };
struct port_info *one = (struct port_info *)malloc(sizeof(*one));
g_list.port = one; // 第一个节点直接赋值
struct port_info *two = xxx;
list_add(&two->list, &g_list.port->list); // 后续节点通过这种方式添加

我看到其他代码都是没有ip_port 这样的一个头结点,所以对list_head 操作有点拿不准。

论坛徽章:
0
2 [报告]
发表于 2011-11-16 00:40 |只看该作者
就用list_head做头结点
struct ip_port {
    u32_t ip;
    struct list_head list;
    /* 其他数据 */
};

struct ip_port g_list = { xx, LIST_HEAD_INIT(g_list.list)};
struct port_info *one = (struct port_info *)malloc(sizeof(*one));
list_add(&one->list, &g_list.list); // 第一个节点直接赋值
struct port_info *two = xxx;
list_add(&two->list, &g_list.list); // 后续节点通过这种方式添加
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP