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

Posted 一起学编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

扩展线性链表存储表示

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

// 广义表的扩展线性链表存储表示
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++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

C语言C++编程学习交流圈子,QQ群:904329806点击进入】微信公众号:C语言编程学习基地

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

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

编程学习书籍分享:

 编程学习视频分享:

 

以上是关于C++基础语法梳理:数据结构丨递归的主要内容,如果未能解决你的问题,请参考以下文章

C++基础语法梳理:数据结构丨链式结构

C++基础语法梳理:数据结构丨顺序结构

C++基础语法梳理:数据结构丨树(二叉树和红黑树)

C++基础语法梳理:算法丨十大排序算法

C++基础语法梳理:数据库丨索引使用和优化

C++基础语法梳理:数据库丨BTree索引