
数据结构
文章平均质量分 76
算法爱好者丶
开心
展开
-
数据结构~17.图结构的操作
数据结构~17.图结构的操作本文是上一篇文章的后续,详情点击该链接~ 上一章主要是理论,那么这一章直接进入实战创建结构体#define MaxNum 20 //图的最大顶点数#define MaxValue 65535 //最大值typedef struct { char Vertex[MaxNum]; //保存顶点信息 int GType; //图的类型 0 无向图 1 有原创 2020-12-19 13:39:59 · 14634 阅读 · 27 评论 -
数据结构~16.图的基本概念和存储结构
线性化二叉树本文是上一篇文章的后续,详情点击该链接~前言 在上一篇文章里面,我们使用了自定义的栈来代替了系统栈,通过循环实现了二叉树的遍历,提升了效率。其实,我们还有一种方法可以使效率变得更加快捷。甚至连用户自定义的栈都可以省掉。那就是,把二叉树的遍历过程给线性化,进一步的提高效率。 对于二叉链表的存储结构,n个结点的二叉树有 n + 1原创 2020-08-14 20:47:13 · 34586 阅读 · 22 评论 -
数据结构~15.使用自定义的栈来优化二叉树的遍历
使用自定义的栈来优化二叉树的遍历本文是上一篇文章的后续,详情点击该链接~前言 在前面遍历二叉树的操作里,基本上都是使用递归实现的,因为递归解决问题的方式会相对循环来说要更加简单一些。但是我们要知道,对于计算机而言,却未必如此。递归的缺点 递归的优点,想必在之前也已经体会到了。使用递归解决问题,往往思路清晰,简单易懂。但是我们要知道,递归原创 2020-08-12 18:44:15 · 37170 阅读 · 49 评论 -
数据结构~14.二叉树的层次遍历与案例分析
二叉树遍历的深入本文是上一篇文章的后续,详情点击该链接~层次遍历原创 2020-08-12 14:39:58 · 34411 阅读 · 32 评论 -
数据结构~13.遍历二叉树的四个应用案例
数据结构学习~13.二叉树的深度本文是上一篇文章的后续,详情点击该链接~原创 2020-08-08 11:45:52 · 35331 阅读 · 32 评论 -
数据结构~12.树与二叉树
数据结构学习~12.树本文是上一篇文章的后续,详情点击该链接~树的基本概念 树是一种非线性的数据结构。要理解树的概念及其术语的含义,用一个例子说明是最好的方法。就比如下图就是一棵树,它是若干节点的集合。是由唯一的根(A)和若干互不相交的子树。就比如说,A,D,H,M,I,J这六个结点组成的树就是一颗子树组成的。其中,每一棵子树又是一棵树,也是由唯一的根结点和若干棵互不相交的子树组成的。由此而知,树的定义是递归的,也就是在原创 2020-08-04 20:12:29 · 34218 阅读 · 34 评论 -
数据结构~11.串
数据结构学习~11.串本文是上一篇文章的后续,详情点击该链接~串的基本定义 串是由零个或者多个字符组成的有序序列。串中字符的个数称为串的长度,含有零个元素的串叫空串。 //这就好比一个名为str的串 char str[] = "today is greate day"; 串中任意连续的字符组成的子序列称为该串的子串,包含子串的串称为原创 2020-08-02 09:45:52 · 33195 阅读 · 54 评论 -
数据结构~10.顺序队和链队
数据结构学习~10.顺序队和链队本文是上一篇文章的后续,详情点击该链接~顺序队循环队列 在顺序队中,通常让队尾指针rear指向刚进队的元素位置,让队首指针front指向刚出队的元素位置。因此,元素进队的时候,rear要向后移动:元素出队的时候,front也要向后移动。这样经过一系列的出队和进队操作以后,两个指针最终会达到数组末端MAXSIZE - 1 处。虽然队中已经没有元素,但仍然无法让元素进队,这就是所谓的 "假溢原创 2020-07-30 20:16:09 · 34132 阅读 · 19 评论 -
数据结构~09.顺序栈和链栈的应用
数据结构学习~09.顺序栈和链栈的应用本文是上一篇文章的后续,详情点击该链接~原创 2020-07-29 19:11:43 · 33502 阅读 · 20 评论 -
数据结构~08.顺序栈和链栈
数据结构学习~08.顺序栈和链栈本文是上一篇文章的后续,详情点击该链接~原创 2020-07-28 19:17:34 · 33153 阅读 · 21 评论 -
数据结构~07.栈和队列的基本概念
数据结构学习~07.栈和队列的基本概念本文是上一篇文章的后续,详情点击该链接~栈的定义: 栈是一种只能在一端进行插入或删除的线性表。其中,允许插入或删除的一端为栈顶(TOP)。栈顶由一个称为栈顶指针的位置指示器来指示。它是动态变化的...原创 2020-07-28 08:26:32 · 33255 阅读 · 23 评论 -
数据结构~06.关于线性表的两个案例
数据结构学习~06.关于线性表的一些算法本文是上一篇文章的后续,详情点击该链接~题目1: 设顺序表用数组arr[ ]表示,表中元素存储在数组下标0~m+n-1的范围内,前 m 个元素和后 n 个元素都递增有序,设计一个算法,使整个顺序表有序。 关于这道题,我们先假设元素是int类型。将数组 arr 中的 m + n 个元素看成是两个顺序表原创 2020-07-24 08:07:19 · 33511 阅读 · 18 评论 -
数据结构~05.双链表的操作,手写Java语言中的LinkedList集合
数据结构学习~05.双链表的操作,手写LinkedList集合本文是上一篇文章的后续,详情点击该链接~先写一个普通的双链表插入和遍历~#include<stdio.h>#include<stdlib.h>typedef struct no_de { int data; //data中存放数据域 struct no_de* pre; //指向前驱结点的指针 struct no_de* next; //指向后继结点的指针}Node;//建立头节点Node*原创 2020-07-20 20:34:46 · 32943 阅读 · 24 评论 -
数据结构~04.关于单链表的归并以及头尾插入问题后续
数据结构学习~04.关于单链表的归并以及头尾插入问题后续~本文是上一篇文章的后续,详情点击该链接~ 在上一篇呢,我们对单链表的合并,以及头尾插入已经有了一个最基本的认识。那么现在呢,我们就来实现使用 头插法来进行单链表的合并操作。代码呢,就接着上一篇的来,可以直接在上一篇文章的最下方复制粘贴。头插法合并两个单链表void headmerge(Node *A,Node *B, Node*&C) { Node*原创 2020-07-17 02:12:57 · 32793 阅读 · 12 评论 -
数据结构~03.关于单链表的归并以及头尾插入问题
数据结构学习~03.关于单链表的归并以及头尾插入问题本文是上一篇文章的后续,详情点击该链接~问题: 设有A和B两个带头结点并且元素递增有序的单链表,我们设计一个算法,将A和B归并成一个按元素值非递减有序的单链表C。而C的话呢,它是由A和B这两个链表中的结点组成。 关于这个问题呢,我们可以先来分析分析。假如说,我要使归并后的C中元素也井然有序,我们可以从A和B中挑出最小的元素插入到C的尾部,这样一来A和B的所有元素都插入C原创 2020-07-15 12:03:06 · 33304 阅读 · 28 评论 -
数据结构~02.顺序表的操作
数据结构学习~02.顺序表的操作本文是上一篇文章的后续,详情点击该链接~例题:已知一个顺序表list,其中的元素递增有序排列,设计一个算法,插入一个元素(int型)x,然后保持该顺序表依然递增有序排列。 我们要完成这个需求,首先就要先找到那个可以让顺序表保持有序的位置,然后再将其位置后面的元素后移,把x放进去。#include<stdio.h>#include<stdlib.h>#defi原创 2020-07-14 22:30:52 · 32985 阅读 · 46 评论 -
数据结构~01.线性表的基本实现和概念~
数据结构学习~01.线性表的基本实现和概念线性表的定义: 线性表是具有相同特征性数据元素的一个有限序列。该序列中所含元素的个数叫做线性表的长度。一般用n(n >= 0)来表示。当n = 0时,线性表为空表。线性表的存储结构: 线性表的存储结构有顺序存储结构和链式存储结构,顺序存储结构被称为顺序表。链式存储结构被称为链表。顺序表和链原创 2020-07-14 08:50:53 · 33842 阅读 · 20 评论