双向链表的问题-自我总结
来源:互联网 发布:怎么看淘宝自然流量 编辑:程序博客网 时间:2024/05/18 13:47
关键词:双向链表
其实是比较简单的问题 经验丰富的人就不用往下看了。
驱动中把所有找到的盘插入到双向链表尾(listHead),然后再从头遍历链表,把符合条件的结点放入另一个链表(disks)中。默认listHead中的第一个结点肯定符合条件,将其插入disks尾。完成这个动作之后,再取第二个结点时,listHead里的链接就变了。看起来很奇怪的问题。
LIST_ENTRY listHead;LIST_ENTRY disks;struct DISK_INFO { LIST_ENTRY entry; ... } ...pListEntry = listHead.Flink;DiskInfo = CONTAINING_RECORD(pListEntry, DISK_INFO, entry);InsertTailList(&disks, &DiskInfo->entry); // (1)while(...){pListEntry = pListEntry->Flink; //(2)其实这时候pListEntry->Flink已经不对了DiskInfo0 = CONTAINING_RECORD(pListEntry, DISK_INFO, entry);}
明眼人可能一看就明白了 在(1)处,pListEntry被链到了disks中,那么它的Flink也已经改变了,已经不是listHead.Flink->Flink了。这其实就相当于把一个结点从链表1中断开(不完全),然后放到链表2中去,它的下一个结点肯定不是原来链表1中的下一个了。
表达能力逐步提高中。。。
- 双向链表的问题-自我总结
- 自我学习之双向链表
- 过滤驱动的问题-自我总结
- 关于高精度问题的自我总结
- 由版本问题引发的自我总结
- 关于Arduino问题查找的自我总结
- 经典进程的同步问题自我总结
- list_head双向链表的删除问题
- 双向链表学习总结
- 对自我的总结
- 乱七八糟的自我总结
- dialog的自我总结
- 简单的自我总结
- AJAX的自我总结
- java的自我总结
- oracle的自我总结
- 自我总结的HTML
- CSS的自我总结!
- linux内存模型之bootmem分配器<一>
- 模拟glib中双链表的部分实现
- hibernate 一对多查询对set的排序
- Host文件的一个妙用
- 云终端设备
- 双向链表的问题-自我总结
- 闭散列
- Android移动开发中通用技术整理
- URL encode
- 单独编译android 下的模块的方法
- 一句话评论设计模式六大原则
- 显卡发展史浅谈 显卡历史大全
- TI OMAP Bootloader Project 关于启动过程
- 动态规划----最长子序列