sizeof 指针变量 大小为4个字节(以32位计算机为例),也是,计算机地址32位,指针存的是内存地址,自然也要32位。
堆和栈的区别:
1 栈由程序自动分配,堆是程序员申请的,必须指明大小;
2 程序结束,栈自动释放,而堆还需要free或者delete,手动释放;
2 分配栈很快,只要剩余空间足够分配,马上分配。申请堆时,计算机先遍历记录空闲内存的链表,找到内存分配,分配速度较慢;
3 栈获得的空间较小,堆获得的空间较大
4 堆中内容由程序员控制,比较灵活。
总结 栈便捷速度快,但自由度小,堆速度慢,但自由度高。
给定单链表头指针和指向要删除节点的指针,要求在O(1)内删除节点。
寻找前驱节点的做法是行不通的,时间复杂度太高,只有另找办法。
将第一个节点的data赋给要删除节点的data,然后删除第一个节点。
顺序有变化,但确实在O(1)内删除了。
检测数组N个元素是否有重复的。A[N]
方法1 循环嵌套,依次向后比,时间复杂度为O(N^2)
方法2 设置检验数组B[N],初始化为0,每读一个数,将相应的数组元素B[A[I]]置为1,当读到一个数A[J],且已经为B[A[J]]1时,即有重复。
方法3 读A[I],将A[A[i]]置为负数,当A[A[J]]也为负数时,有重复