vlambda博客
学习文章列表

C++基础语法梳理:数据结构丨递归

本期是C++基础语法分享的第十三节,今天给大家来梳理一下递归!


递归

概念:函数直接或间接地调用自身

递归与分治

A.分治法

(1)问题的分解

(2)问题规模的分解

B.折半查找(递归)

C.归并排序(递归)

D.快速排序(递归)

递归与迭代

A.迭代:反复利用变量旧值推出新值

B.折半查找(迭代)

C.归并排序(迭代)

广义表

头尾链表存储表示

广义表的头尾链表存储表示和图片

// 广义表的头尾链表存储表示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;

C++基础语法梳理:数据结构丨递归

扩展线性链表存储表示

扩展线性链表存储表示和图片

// 广义表的扩展线性链表存储表示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;


今天的分享就到这里了,大家要好好学C++哟~

写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!