大家来帮忙回答一个链表的问题,谢谢了!
目的:我现有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就容易出问题