C双向链表删除操作

[复制链接]
查看11 | 回复2 | 2016-2-16 20:15:42 | 显示全部楼层 |阅读模式
首先,你的malloc用错了,malloc(sizeof(node*))表示申请一个大小为4字节的区域,应该用malloc(sizeof(node)),这样才能正确申请一块刚好用于存储一个node的内存区域。因为sizeof(node*)得出的是node*这种指针所占用的内存大小,32位系统里是4字节。sizeof(node)则返回node结构体占用的内存大小。所以需要把malloc(sizeof(node*))都改为malloc(sizeof(node))其次,node* NODE = (node*)malloc(sizeof(node*));if (NULL == NODE){printf("The NODE...
回复

使用道具 举报

千问 | 2016-2-16 20:15:42 | 显示全部楼层
node* tmpnode = NODE->next->next;free(NODE->next);//free了已经NODE->next = tmpnode;//在这你又继续使用了NODE->next->pre = NODE;//在这 你也使用了 所以 会出错 在使用链表的时候 要判断他是否存在 不为空 再用也就是进行安全性检测...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行