递归
概念
函数直接或间接地调用自身
递归与分治
- 分治法
- 问题的分解
- 问题规模的分解
- 折半查找(递归)
- 归并查找(递归)
- 快速排序(递归)
递归与迭代
- 迭代:反复利用变量旧值推出新值
- 折半查找(迭代)
- 归并查找(迭代)
广义表
头尾链表存储表示
广义表的头尾链表存储表示和图片
// 广义表的头尾链表存储表示typedef enum {ATOM, LIST} ElemTag;// ATOM==0:原子,LIST==1:子表typedef struct GLNode {ElemTag tag;// 公共部分,用于区分原子结点和表结点union {// 原子结点和表结点的联合部分AtomType atom;// atom 是原子结点的值域,AtomType 由用户定义struct {struct GLNode *hp, *tp;} ptr;// ptr 是表结点的指针域,prt.hp 和 ptr.tp 分别指向表头和表尾} a;} *GList, GLNode;

扩展线性链表存储表示
扩展线性链表存储表示和图片
// 广义表的扩展线性链表存储表示typedef enum {ATOM, LIST} ElemTag;// ATOM==0:原子,LIST==1:子表typedef struct GLNode1 {ElemTag tag;// 公共部分,用于区分原子结点和表结点union {// 原子结点和表结点的联合部分AtomType atom; // 原子结点的值域struct GLNode1 *hp; // 表结点的表头指针} a;struct GLNode1 *tp;// 相当于线性链表的 next,指向下一个元素结点} *GList1, GLNode1;

