From 8836dd5a20ea44ecfbc07f2f864c9b4aed0497ed Mon Sep 17 00:00:00 2001 From: huihut Date: Thu, 15 Feb 2018 00:12:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=B9=BF=E4=B9=89=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 68 ++++++++++++++++++++++++++++++++++++ images/GeneralizedList1.png | Bin 0 -> 10341 bytes images/GeneralizedList2.png | Bin 0 -> 10188 bytes 3 files changed, 68 insertions(+) create mode 100644 images/GeneralizedList1.png create mode 100644 images/GeneralizedList2.png diff --git a/README.md b/README.md index afc0250..51eb283 100644 --- a/README.md +++ b/README.md @@ -160,6 +160,74 @@ typedef struct { ### 递归 +#### 概念 + +函数直接或间接地调用自身 + +#### 递归与分治 + +* 分治法 + * 问题的分解 + * 问题规模的分解 +* 折半查找(递归) +* 归并查找(递归) +* 快速排序(递归) + +#### 递归与迭代 + +* 迭代:反复利用变量旧值推出新值 +* 折半查找(迭代) +* 归并查找(迭代) + +#### 广义表 + +[维基百科 . 广义表](https://zh.wikipedia.org/wiki/%E5%B9%BF%E4%B9%89%E8%A1%A8) + + +##### 头尾链表存储表示 + +```cpp +// 广义表的头尾链表存储表示 +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; +``` + +![](images/GeneralizedList1.png) + +##### 扩展线性链表存储表示 + +```cpp +// 广义表的扩展线性链表存储表示 +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; +``` + +![](images/GeneralizedList2.png) + ### 二叉树 ### 三叉树 diff --git a/images/GeneralizedList1.png b/images/GeneralizedList1.png new file mode 100644 index 0000000000000000000000000000000000000000..e52f66eac081b4072b398d0e153b77f319357854 GIT binary patch literal 10341 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 literal 0 HcmV?d00001