c++链表 怎样将顺序表和链表合并成一个有序表?
浏览量:2621
时间:2021-03-11 08:39:33
作者:admin
怎样将顺序表和链表合并成一个有序表?
这个问题最麻烦之处在于内存的分配。你用C还是C ?
C 的话,单链表用list结构,顺序表用vector结构,假设二者分别为list<int> a和vector<int> b。后面就容易了,
while (!a.empty())
{
b.push_back(a.front())
a.pop_front()
}
顺序表的内存分配问题STL会自行解决的。
如果是C就有点辛苦了,比较直观的做法是先把链表从头到尾走一遍,算出它的长度,然后分配一个空间,其长度等于单链表和顺序表长度之和,再把两个表的内容拷进去。稍微优化一点的做法是先猜测一个适当的链表的长度,然后以此来分配内存;如果后来发现链表过长,那么把猜测的长度加倍,重新分配内存。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。