为了建立如图所示的存储结构(即每个结点含有2个域,data是数据域,next是指向结点的指针域),则在[]处应填写的选项是:B
struct link
{
char data;
[];
}node;
A、link next; B、struct link *next; C、link * next; D、struct link next;
在C++语言中,B和C选项都可以;但在C语言中只有B可以。因为在C++中可以有不完全的类类型,即是在类中可以声明类自身的指针和引用。
注意:在C++中,定义相应的指针时可以写struct或者不写;但是在C中必须要写struct。
————————————————————————————————————————————————————————————————
选堆快希不稳(稳定性):
a、简单选择O(n^2)
b、堆排序O(nlog n)
c、快排,O(K nlog n)。K是常数因子,在所有O(nlog n)复杂度中,快排的K值最小。
d、希尔排序,将待排序的关键字序列分成若干个较小的子序列,对子序列进行直接插入排序,使整个待排序序列排好序。O(n^1.5)
选堆归基不变(时间复杂度的变化特性):
a、简单选择O(n^2);
b、堆排序O(nlog n);将向量中存储的数据看出一个完全二叉树,利用完全二叉树中双亲结点和孩子结点之间的内在关系选择关键字最小的记录。
c、归并排序 O(nlog n); 算法思想,设初始序列长度为n,将这n个序列看成n个有序的子序列,然后两两合并得到一个ceil(N/2)长度为2的有序子序列。在此基础上再对长度为2的有序子序列进行归并排序,得到若干长度为4的子序列,如此重复得到一个长度为n的有序子序列为止。