Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by Q DataType data
数据结构 | 二叉树(基本概念、性质、遍历、C代码实现)
1.树的基本概念 树是一种 非线性 的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。 把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点,称为根结点,根结点没有前驱结点 除根结点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm, 其中每一个集合Ti(1<= i <= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继 因此, 树是递归定义 的。 结点的度:一个结点含有的子树的个数称为该结点的度; 叶结点:度为0的结点称为叶结点; 分支结点:度不为0的结点; 父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点; 子结点:一个结点含有的子树的根结点称为该结点的子结点; 兄弟结点:具有相同父结点的结点互称为兄弟结点; 树的度:一棵树中,最大的结点的度称为树的度; 结点的层次:从根开始定义起,根为第1层,根的子结点为第2层,以此类推; 树的高度或深度:树中结点的最大层次; 2.二叉树的基本概念 一棵二叉树是结点的一个有限集合,该集合: 1. 或者为空 2.
【海贼王的数据航海:利用数据结构成为数据海洋的霸主】栈和队列-CSDN博客
目录 1 -> 栈 1.2.1 -> Stack.h 1.2.2 -> Stack.c 1.2.3 -> Test.c 2.2.1 -> Queue.h 2.2.2 -> Queue.c 1 -> 栈 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出数据也在栈顶。 栈的实现一般可以使用数组或链表实现,相对而言数组的结构实现更优。因为数组在尾上插入数据的代价比较小。 1.2.1 -> Stack.h #pragma once #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <assert.h> #include <stdbool.h> // 定长的静态栈的结构,实际中一般不实用 //typedef int STDataType; //#define N 10...
LeetCode 225.用队列实现栈(详解) ૮꒰ ˶• ༝ •˶꒱ა
题目详情: 思路:1.定义两个队列用于存储栈的数据,其中一个为空。 2.对我们定义的栈进行入数据,就相当于对不为空的队列进行入数据。 3.对我们定义的栈进行删除,相当于取出不为空的队列中的数据放到为空的队列中,直到此时只剩下一个数据;对剩下的数据进行取出后删除。也就相当于对当前的栈进行删除。(对于栈的顶删相当于对队列的尾删) 3.返回栈的顶部元素 4.销毁栈 注意:用c语言实现队列,没法直接引用,这里需要自己创建一个队列,再完成上述操作。如果还不会队列的小伙伴可以看看我的这篇博客数据结构--队列【详解】~(˶‾᷄ꈊ‾᷅˵)~-CSDN博客 队列的实现: typedef int QDataType; typedef struct QueueNode {//队列的定义与声明 struct QueueNode* next; QDataType data; }QNode; //创建一个结构体用于存储队列头尾指针 typedef struct Queue { QNode* head; QNode* tail; }Queue; //初始化队列 void QueueInit(Queue*...
【LeetCode刷题日志】225.用队列实现栈-阿里云开发者社区
🎈个人主页:库库的里昂 ?🎐C/C++领域新星创作者 ?🎉欢迎 👍点赞?评论?收藏 ?收录专栏:LeetCode 刷题日志 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗 1.题目描述 OJ链接 【leetcode 题号:225.用队列实现栈】【难度:简单】 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int top() 返回栈顶元素。 boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。 注意: 你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。 你所使用的语言也许不支持队列。?你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列?, 只要是标准的队列操作即可。 示例: 输入:...
栈(stack)和队列(queue)-阿里云开发者社区
?一、栈的概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出数据也在栈顶。 二、栈的实现 栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的 代价比较小。 三、实现栈(数组实现) bool StackEmpty(Stack* ps) { return ps->top == 0; //空返回1;非空返会0; } 四、队列的概念 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out) 入队列:进行插入操作的一端称为 队尾 出队列:进行删除操作的一端称为 队头 五:队列的实现 队列的初始化:void QueueInit(Queue* pq); 队列的销毁:void QueueDestroy(Queue* pq);...
栈&队列OJ练习题(C语言版)-CSDN博客
目录 如果栈和队列忘了,不妨看看小生的这两篇复习一下数据结构与算法—栈 数据结构与算法—队列 一、括号匹配问题 20.
【Leetcode -225.用队列实现栈 -232.用栈实现队列】
开发者社区 云计算 文章 正文 2023-10-26 2 简介: 【Leetcode -225.用队列实现栈 -232.用栈实现队列】 Leetcode -225.用队列实现栈 题目:仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int top() 返回栈顶元素。 boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。 注意: 你只能使用队列的基本操作 —— 也就是 push to back、peek / pop from front、size 和 is empty 这些操作。 你所使用的语言也许不支持队列。 你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。 示例: 输入: [“MyStack”, “push”, “push”, “top”, “pop”, “empty”] [[],...
万字精讲--数据结构栈与队列必会OJ练习-阿里云开发者社区
在之前的博客中,我们学习了栈与队列的基本内容,并且实现了栈与队列。今天我们进行刷题训练,走进栈与队列的世界中去感受一番!!! 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 OJ链接?【leetcode 20.有效的括号】 这道题我们先做分析:满足的三大条件总结:类型匹配、顺序匹配、数量匹配。要满足这三个条件才可以返回true,反之则返回false。 最左边的括号要与最右边的括号进行匹配,这里我们就可以使用栈先进后出的特性来完成。当我们遇到一个左括号时,让其进栈进行储存。反之遇到右括号时,让栈中元素进行出栈进行匹配。 ?
【数据结构】二叉树的节点数,叶子数,第K层节点数,高度,查找x节点,判断是否为完全二叉树等方法【下】-阿里云开发者社区
开发者社区 大数据 文章 正文 2023-10-09 4 简介: 六、二叉树叶子节点个数 1.代码: 2.测试结果: 七、二叉树第k层节点个数 1.代码: 2.测试结果: 八、二叉树查找值为x的节点 1.代码: 2.测试结果: 九、判断二叉树是否是完全二叉树 1.代码: 2.测试结果: 十、补充:队列代码 Queue.h Queue.c 💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页?:阿然成长日记 👈点击可跳转 📆?个人专栏:?🔹数据结构与算法🔹C语言进阶 🚩 不能则学,不知则问,耻于问人,决无长进 🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍 文章目录 六、二叉树叶子节点个数 1.代码: 2.测试结果: 七、二叉树第k层节点个数 1.代码: 2.测试结果: 八、二叉树查找值为x的节点 1.代码: 2.测试结果: 九、判断二叉树是否是完全二叉树 1.代码: 2.测试结果: 十、补充:队列代码 Queue.h Queue.c 六、二叉树叶子节点个数 思路: 1.向下递归的条件是当前节点左或者右节点有一个为空,一个不为空。...
【数据结构】栈和队列-- OJ-CSDN博客
目录 一 用队列实现栈 225.
【C语言数据结构------栈和队列4000字详解】_-_Joker_-的博客-CSDN博客
欢迎阅读新一期的c语言数据结构模块————栈和队列 ✒️个人主页:-_Joker_- 🏷️专栏:C语言 📜代码仓库:c_code 🌹🌹欢迎大佬们的阅读和三连关注,顺着评论回访🌹🌹 文章目录 栈 一、栈的概念 1.什么是栈 2.栈的基本操作 二、栈的实现 1.定义栈的结构 2.栈的初始化 3.栈的判空 4.入栈 5.出栈 6.获取栈顶元素 7.栈的销毁 队列 一、队列的概念 1.什么是队列 2.队列的基本操作 二、队列的实现 1.定义队列的结构 2.队列初始化 3.队列判空 4.入队 5.出队 6.获取队首元素 7.队列的销毁 栈 1.什么是栈 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 栈顶(Top): 线性表允许进行插入删除的那一端。 栈底(Bottom): 固定的,不允许进行插入和删除的另一端。 空栈:...
链式二叉树的实现及遍历(C语言版)_HenryLin1234的博客-CSDN博客
目录 1 基本概念 ⭕树是一种非线性的数据结构 ⭕树的根结点没有前驱节点,根节点可以指向任意多个子节点(N叉树) ⭕树形结构中,子树之间不能有交集,否则就是图 ⭕度:一个节点含有的子树的个数。例如二叉树的根节点的度为2,上图A节点的度为3 ⭕树的度:一棵树中最大的节点的度。如二叉树的度就是其根节点的度,上图树的度为3 ⭕树的高度或深度:树中节点的最大层次。如上图树的高度为3 ⭕叶子节点或终端节点:度为0的节点。如上图的E F G均为叶子节点 1.2.1 "左孩子右兄弟"表示法 1.2.2 "左右子树"表示法 ⭕问:为什么不叫“左右孩子”表示法呢? 答:结构体内的left指针和right指针的确指向根的左右孩子节点,但是以整体的思想,左右孩子节点又是左子树和右子树的根节点,以“左右子树”命名有利于帮助我们理解二叉树的一系列递归问题。 ⭕在现阶段,我们运用“左右子树”表示法更多一些。 1.2.3 手动构建一棵树 typedef char BTDataType; typedef struct BinaryTreeNode { struct BinaryTreeNode* left;...
手撕二叉树_小宁n的博客-CSDN博客
前序遍历构建二叉树 二叉树的销毁 二叉树的结点个数 二叉树叶子节点个数 二叉树第k层节点个数 二叉树查找值为x的节点 二叉树前序遍历 二叉树中序遍历 二叉树后序遍历 二叉树的层序遍历 判断二叉树是否是完全二叉树 完整代码 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <assert.h> #include <stdlib.h> typedef int BTDataType; typedef struct BinaryTreeNode { struct BinaryTreeNode* left; struct BinaryTreeNode* right; BTDataType val; }BTNode; #include "Queue.h" // 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 BTNode* BinaryTreeCreate(BTDataType* a, int* pi) { if (a[*pi] == -1) { ++(*pi); return NULL; }...
栈和队列OJ_#欲速则不达#的博客-CSDN博客
题目介绍: 思路: 如果 c 是左括号,则入栈 push; 否则通过哈希表判断括号对应关系,若 stack 栈顶出栈括号 stack.pop() 与当前遍历括号 c 不对应,则提前返回 false。 栈 stack 为空: 此时 stack.pop() 操作会报错;因此,我们采用一个取巧方法,给 stack 赋初值 ?,并在哈希表 dic 中建立 key: ‘?’,value:’?’ 的对应关系予以配合。此时当 stack 为空且 c 为右括号时,可以正常提前返回 false 字符串 s 以左括号结尾: 此情况下可以正常遍历完整个 s,但 stack 中遗留未出栈的左括号;因此,最后需返回 len(stack) == 1,以判断是否是有效的括号组合 typedef int STDataType; //动态存储结构 typedef struct Stack { STDataType *a; int top; int capacity; //容量 }ST; void STInit(ST* ps); //初始化栈 void STDestory(ST* ps); //销毁栈 bool...
万字精讲--数据结构栈与队列必会OJ练习_W…Y的博客-CSDN博客
W...Y的主页 💕 代码库分享 😊 在之前的博客中,我们学习了栈与队列的基本内容,并且实现了栈与队列。今天我们进行刷题训练,走进栈与队列的世界中去感受一番!!! 目录 括号匹配问题 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 OJ链接 【leetcode 20.有效的括号】 这道题我们先做分析:满足的三大条件总结:类型匹配、顺序匹配、数量匹配。要满足这三个条件才可以返回true,反之则返回false。 最左边的括号要与最右边的括号进行匹配,这里我们就可以使用栈先进后出的特性来完成。当我们遇到一个左括号时,让其进栈进行储存。反之遇到右括号时,让栈中元素进行出栈进行匹配。 #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<stdbool.h> typedef char STDataType; typedef...
深入浅出带你玩转栈与队列--【数据结构】_W…Y的博客-CSDN博客
W...Y的主页 😊 代码仓库分享 💕 目录 1.栈 1.3.2进栈 1.3.3出栈 2.队列 2.3.4出队 在前几期的学习中,我们学习了顺序表与链表,今天我们将学习一种新的数据结构——栈与队列。而栈与队列实际上就是链表的一种变形产物,但肯定会有许多结构上的不同。 现在就让我们进入栈和队列,看看它们的特点!!! 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出数据也在栈顶。 1.2栈的结构特征图 文字力量有时太过渺小,我们通过图解更清楚的了解栈的特点。 1.3栈的实现 栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。 void STInit(ST* ps) { assert(ps); ps->a = NULL; ps->capacity = 0; ps->top...
【LeetCode】【数据结构】栈与队列必刷OJ题_樊梓慕的博客-CSDN博客
👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 本篇文章博主会给大家推荐几道栈与队列的必刷OJ题,并提供思路分析及原码(包含栈与队列的实现)。 欢迎大家📂收藏📂以便未来做题时可以快速找到思路,巧妙的方法可以事半功倍。 ========================================================================= GITEE相关代码:🌟fanfei_c的仓库🌟 ========================================================================= 原题链接:🍏有效的括号🍏 题目:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 根据栈“先入后出”的特性,我们可以利用栈的数据结构进行检验。...
数据结构:栈和队列_stackY、的博客-CSDN博客
目录 1.栈 1.2.3入栈 1.1栈的概念及结构 1.2栈的实现 1.2.1栈的创建 1.2.2栈的初始化 1.2.3入栈 1.2.4检测栈是否为空 1.2.5出栈 1.2.6获取栈顶元素 1.2.7获取栈中有效元素的个数 1.2.8销毁栈 1.2.9访问栈 1.3栈的完整代码 2.1队列的概念及结构 2.2队列的实现 2.2.1队列的创建 2.2.2队列的初始化 2.2.3队尾入队列 2.2.4检测队列是否为空 2.2.5队头出队列 2.2.6获取队头数据 2.2.7获取队尾数据 2.2.8获取队列有效元素个数 2.2.9销毁队列 2.2.10访问队列 2.3队列完整代码
【LeetCode训练营】用栈来实现队列+用队列来实现栈 详解
目录 源码 源码 后记 232.
C语言实现栈和队列(动态)_派小星233的博客-CSDN博客
目录 (1)什么是栈 (2)栈的两种实现方式 (3)栈的一些基本接口实现 【1】栈的结构体和初始化 【2】入栈 【3】销毁 【4】出栈 【5】判断栈是否为空 【6】取顶部数据 【7】取栈中有效数据的个数 【8】栈的全部代码 (1)什么是队列 (2)队列的两种实现方式 (3)队列的一些基本接口实现 【1】队列的结构体和初始化 【2】入队列 【3】销毁队列 【4】判断队列是否为空 【5】出队列(删除数据) 【6】查找队列的头尾数据 【7】查找队列的结点个数 【8】队列的全部代码
二叉树的非递归遍历_派小星233的博客-CSDN博客
目录 前言: 一:前序遍历 二:中序遍历 三:后序遍历 四:层序遍历 前言: 二叉树的非递归遍历需要借助栈和队列以及二叉树的一些基础接口,这些在之前的文章中有讲过,这里就不赘述,不清楚的家人们可以点链接,这里直接给出所有需要的接口。 栈和队列:https://blog.csdn.net/2301_76269963/article/details/129823215?spm=1001.2014.3001.5501 二叉树基础接口:https://blog.csdn.net/2301_76269963/article/details/130231257?spm=1001.2014.3001.5501 代码: //队列 struct BinaryTreeNode; //重定义,方便更改存储类型 typedef struct BinaryTreeNode* QDataType; //结点的结构体 typedef struct QueueNode { struct QueueNode* next; QDataType data; }QNode;...
一文教你数据结构体栈和队列的实现_️小马️的博客-CSDN博客
目录 1.3.1 .c 1.3.2 .h 1.3.3 test 2.3.1 .c 2.3.2 .h 2.3.3 test 1.1栈的概念及结构: 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 ~~~~记住一个原则,先进的后出,后进的先出。~~~~ 1.2栈的实现: 栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。我们保证首先插入的后面出来就行。 1.2.1栈的定义: typedef int STDataType; //重定义int typedef struct Stack{ STDataType* a; STDataType top; //栈顶 STDataType capicity; }ST; 1.2.2栈的初始化: void StackInit(ST*ps) { assert(ps); ps->a=NULL;...
【数据结构】二叉树的构建(C语言实现)_建立二叉树的代码c语言_心辰如月1的博客-CSDN博客
1.树概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点,称为根结点,根节点没有前驱结点 除根节点外,其余结点被分成M(M>0)个互不相交的集合T1**、T2、……、**Tm,其中每一个集合Ti(1<= i <= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继 因此,树是递归定义的 注意:树形结构中,子树之间不能有交集,否则就不是树形结构 1.2树的相关概念 节点的度:个节点含有的子树的个数称为该节点的度; 如上图:A的为6 叶节点或终端节点:度为0的节点称为叶节点; 如上图:B、C、H、I…等节点为叶节点 非终端节点或分支节点:度不为0的节点; 如上图:D、E、F、G…等节点为分支节点 双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点; 如上图:A是B的父节点 孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点; 如上图:B是A的孩子节点...
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with Q DataType
Contact Q DataType, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack