带头指针的长度为n的双向循环链表的末尾插入一个元素,其时间复杂度为O( )。(?
顺序表L,长度为n,求第i个节点L[i],直接前驱L[i-1],因此为O(1)答案B需要移动n-i个节点,因此为O(n)答案C也需要移动n-i个节点答案D根据排序方法不同最慢O(n^2),最快O(nlogn)。
因为二叉树的机制是把较大的值放左边较小值放右边,所以插入和查找跟对分查找的机制是一样的,平均复杂度是O(log N)。如果是平衡二叉树那最坏次数是准确的 log N 次(以上log都是2为底)
扩展资料
单链表的建立有头插法、尾插法两种方法。
头插法:
单链表是用户不断申请存储单元和改变链接关系而得到的一种特殊数据结构,将链表的左边称为链头,右边称为链尾。头插法建单链表是将链表右端看成固定的,链表不断向左延伸而得到的。头插法最先得到的是尾结点。
由于链表的长度是随机的,故用一个while循环来控制链表中结点个数。假设每个结点的值都大于O,则循环条件为输入的值大于o。
申请存储空间可使用malloc()函数实现,需设立一申请单元指针,但malloc()函数得到的指针并不是指向结构体的指针,需使用强制类型转换,将其转换成结构体型指针。刚开始时,链表还没建立,是一空链表,head指针为NULL。
链表建立的过程是申请空间、得到数据、建立链接的循环处理过程。
C(编程语言) 算法 C/C++ 编程 编程语