免费注册 查看新帖 |

Chinaunix

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

一个比较有技巧的代码:) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-29 14:45 |只看该作者 |倒序浏览
释放单链表的函数:
void        free_chainlist(
        void         **List                                                        /*        头指针的指针        */
)
{
        void                        *curp = NULL;
        void                        *nextp = NULL;       

        if (List == NULL) {
                return;
        }
        if (*List == NULL) {
                return;
        }
        curp = *List;
        while (curp != NULL) {
                nextp = *(void **)curp;
                free(curp);
                curp = nextp;
        }
        *List = NULL;
}

把链表节点定义成如下形式就可以了:
struct list
{
     struct list*next;
     .....
};
next域放在第一个位置.

[ 本帖最后由 spiritX 于 2008-4-29 14:49 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-04-29 14:48 |只看该作者
结构第一个分量的地址与结构的地址相同,所以才可以这样写。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2008-04-29 15:00 |只看该作者
奇技淫巧,都是我所鄙视的。

论坛徽章:
0
4 [报告]
发表于 2008-04-29 15:04 |只看该作者
是呀,不具备通用性

论坛徽章:
0
5 [报告]
发表于 2008-04-29 15:31 |只看该作者
这个当然具有通用性拉!

论坛徽章:
0
6 [报告]
发表于 2008-04-29 15:32 |只看该作者
原帖由 spiritX 于 2008-4-29 15:31 发表
这个当然具有通用性拉!

技巧性不及kernel中list封装,通用性也比不上。

论坛徽章:
0
7 [报告]
发表于 2008-04-29 15:45 |只看该作者
原帖由 cugb_cat 于 2008-4-29 15:32 发表

技巧性不及kernel中list封装,通用性也比不上。


kernel中的list确实很好用。

论坛徽章:
0
8 [报告]
发表于 2008-04-29 16:25 |只看该作者

回复 #3 flw 的帖子

不提倡

论坛徽章:
0
9 [报告]
发表于 2008-04-29 18:37 |只看该作者
不明白,比较菜

论坛徽章:
0
10 [报告]
发表于 2008-04-29 19:41 |只看该作者
对不起,我考虑错了。
指针是4字节,很多情况下结构体都是以4对齐的,所以不存在我之前想的这个问题。Sorry。

[ 本帖最后由 scutan 于 2008-4-29 20:20 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP