队列特点:先进先出(FILO)
逻辑结构:线性结构
队列头出数据,队列尾入数据,
顺序队列:
判断队列为空的条件: front (尾)= rear(头)
判断队列为满的条件:(rear+1)%MAXLEN = front;
链式队列:无需判断队列满;
判断队列空:没有头结点时: front = NULL;
有头结点时: front = rear;
笔试面试题:
1. 如何使用两个栈,实现一个队列的功能?
栈是先进后出的结构,队列是先进先出的结构。
创建两个栈,栈A和栈B,
入队列时:直接入到栈A里面,
出队列时:先判断栈B是否为空,如果不为空,直接在栈B中pop一个元素,
如果栈B为空,先将栈A中的所有元素依次pop并push到栈B中,然后在栈B中pop一个
元素。
2.如何用俩个队列实现一个栈的功能:
1、进栈:把元素push进⾮空的队列,如果两者都是空的,则随意。
2、出栈:把⾮空队列⾥⾯的前n-1个元素push到空队列⾥⾯,再把最后⼀个元素拿出来即可。
3、循环以上步骤,即可得到实现⽬的。
递归:
递归是是在函数中不断调用自身的一个过程。
递归也是一个不断压栈的过程,所以递归一定要有出口,否则会出现栈满溢出,导致段错误。
C语言程序分为:顺序结构,分支结构,循环结果。
递归不属于C语言程序结构,它只是函数调用,只是调用的方式有点特殊。
二叉树:
满二叉树:
叶子节点一定在最下面
非叶子节点的度一定为2
在同样深度的二叉树中,满2叉树的节点是最多的,叶子节点也是最多的
在第i层,所有节点个数为2(i)次方-1;
在第i层,i层中的节点个数为2(i-1)次方
完全二叉树的特点:
叶子节点只能出现在最下两层
最下层的叶子一定集中在左部连续位置
倒数第二层若有叶子结点,一定都在右部连续位置
如果节点度为 1 则该节点只有左孩子
满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树



