![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 64
何人搵英雄泪
学生
展开
-
数据结构学习记录(六)------树
前言 树:有且只有一个称为根的节点,有若干个互不相交的子树,这些子树本身也是一颗树。 通俗理解:树由节点与边组成,每一个节点只有一个父节点,但可以有多个子节点,但有一个节点例外,该节点没有父节点,此节点为根节点。 专业术语: 1、深度:从根节点到最底层节点的层数叫深度,根节点是第一层。 2、叶子节点:没有子节点的节点。 3、非终端节点:实际就是非叶子节点。 4、度:子节点的个数。 树的分类 树可以分为一般树、二叉树、森林。 一般树:任意一个节点的子节点的个数都不受限制。 森林:n个互不相交的树的集合。 二原创 2021-05-04 17:22:09 · 123 阅读 · 0 评论 -
数据结构学习记录(五)------递归举例
前言 递归:一个函数直接或者间接调用自己。 本文主要介绍递归的几个简单举例。 递归满足的条件 1、递归必须得有一个明确的终止条件; 2、该函数所处理的数据规模必须是递减的; 3、这个转化必须是可解的。 循环与递归的比较 所有循环都可以由递归实现,而所有递归不一定都可由循环实现。 比较内容 优点 缺点 递归 容易理解 速度慢、存储空间大 循环 速度快、存储空间小 不易理解 求阶乘 用循环实现 #include <stdio.h> int main(void) {原创 2021-05-03 10:47:17 · 1544 阅读 · 1 评论 -
数据结构学习记录(四)------循环队列
前言 队列是一种实现“先进先出”的存储结构,可以分为链式队列和静态队列(静态队列通常都是循环队列)。 本文主要叙述循环队列的一些基础知识和代码实现。 循环队列的参数以及各个参数的含义 1、确定循环队列需要的参数 确定一个循环队列需要两个参数:front、rear 2、各个参数的含义 a、队列初始化:front和rear的值都是0; b、队列非空:front代表循环队列的第一个元素,rear代表循环队列的最后一个有效元素的下一个元素; c、队列为空:front和rear的值相等,但不一定是0原创 2021-04-30 13:50:23 · 136 阅读 · 0 评论 -
数据结构学习记录(三)------动态栈
前言 栈是一种实现“先进后出”的存储结构。 本文主要介绍对动态栈的初始化、压栈、遍历、出栈、清空。 对动态栈的操作 初始化 初始化伪算法 初始化代码 void init(PSTACK pS) { pS->pTop = (PNODE)malloc(NODE); //创建一块动态内存,让pS->pTop指向它 上图1 { if(NULL == pS->pTop) //判断内存是否分配成功 { printf("内存分配原创 2021-04-28 16:09:47 · 89 阅读 · 0 评论 -
数据结构学习记录(二)------链表
前言 本篇文章是在上一篇文章link.的基础上对非循环单链表的其他操作(判断链表是否为空、求链表的长度、对链表排序以及对链表的插入和删除操作) 判断链表是否为空 代码实现: bool is_empty(PNODE pHead) { PNODE p = pHead->pNext; if(NULL == p) return true; else return false; } 求链表的长度 代码实现: int length_list(PNODE p原创 2021-04-27 21:07:19 · 97 阅读 · 0 评论 -
数据结构学习记录(一)
创建一个非循环单链表并遍历 创建一个非循环单链表 创建非循环单链表伪算法演示 首先创建一个不存放有效数据的头结点,然后利用一个for循环在头结点后面创建结点。 具体代码实现 //创建一个链表 PNODE create_List(void) { int len; //用来存放有效节点的个数 int i; int val; //用来临时存放用户输入的结点的值 //分配了一个不存放有效数据的头结点 PNODE pHead = (PNODE)malloc(sizeof原创 2021-04-26 18:54:33 · 153 阅读 · 0 评论