c++链表 怎样将顺序表和链表合并成一个有序表?
怎样将顺序表和链表合并成一个有序表?这个问题最麻烦之处在于内存的分配。你用C还是C ?C 的话,单链表用list结构,顺序表用vector结构,假设二者分别为list<int> a和vec
怎样将顺序表和链表合并成一个有序表?
这个问题最麻烦之处在于内存的分配。你用C还是C ?
C 的话,单链表用list结构,顺序表用vector结构,假设二者分别为list<int> a和vector<int> b。后面就容易了,
while (!a.empty())
{
b.push_back(a.front())
a.pop_front()
}
顺序表的内存分配问题STL会自行解决的。
如果是C就有点辛苦了,比较直观的做法是先把链表从头到尾走一遍,算出它的长度,然后分配一个空间,其长度等于单链表和顺序表长度之和,再把两个表的内容拷进去。稍微优化一点的做法是先猜测一个适当的链表的长度,然后以此来分配内存;如果后来发现链表过长,那么把猜测的长度加倍,重新分配内存。