读书人

大家来帮忙回答一个链表的有关问题多

发布时间: 2014-06-08 16:32:34 作者: rapoo

大家来帮忙回答一个链表的问题,谢谢了!
目的:我现有mylist单链表,需要将同工程下的另一个模块中的cmdlist链表传递过来并链接在我现有的mylist链表下。那么我是不是仅仅需要执行mylist->tail = cmdlist->head就可以了,还是需要遍历mylist找到尾节点endnode和cmdlist的头结点firstnode,然后执行endnode->next = firstnode->prev? 另外还有个问题:cmdlist是动态生成链表,在另一个模块里已经创建了cmdlist,把它拿过来链接在mylist上应该不需要再次molloc内存空间了吧?谢谢

[解决办法]
单链表一般没有tail吧。。

应该是2句:
endnode->next = firstnode;
firstnode->prev=endnode;

另外,不需要重新malloc,同一工程下的生命期都存在的
[解决办法]
一个原则是在哪个空间开辟的内存必须在这个空间释放,如果模块是dll或者exe,那么两个模块属于不同的空间。实在搞不清的话,就重新malloc。
[解决办法]
单链表一般有头无尾
所以要遍历mylist找到最后的节点再接上cmdlist
而cmdlist在另外一个模块里申请内存,如果在其他操作里释放掉了,那你再使用连接后的mylist就容易出问题

读书人网 >软件架构设计

热点推荐