
C语言的数据结构
文章平均质量分 85
自学前端_又又
这个作者很懒,什么都没留下…
展开
-
C语言的数据结构:图的操作
注意:在遍历的过程中,可能会出现回路已经访问过的节点还要重新访问一次当从A开始访问时,先访问A,然后C,这时候由于C和D没有连接,无法直接到达D,需要再回到A,此时A就被多次访问了。可以创建一个数组用于保存访问过的顶点。原创 2024-07-02 15:36:52 · 1959 阅读 · 1 评论 -
C语言的数据结构:图的基本概念
之前学过了其它的数据结构,如:集合集合 —— 数据元素属于一个集合。线型结构线型结构 —— 一个对一个,如线性表、栈、队列,每一个节点和其它节点之间的关系一个对一个一个对一个。树型结构树型结构 —— 一个对多个,如树。现在要接触一下图这个结构了,图是多个对多个的结构,其没有初始结点,也没有最终结点。每一个节点都称为顶点。图图——因为图是若干个顶点,顶点之间相互连接,没有先后顺序,所以图没有顺序存储结构,但可以借助二维数组来表示元素间的关系(邻接矩阵邻接矩阵)。原创 2024-07-02 10:51:14 · 1292 阅读 · 0 评论 -
C语言的数据结构:树与二叉树(哈夫曼树篇)
上篇讲完了二叉树,二叉树的查找性能要比树好很多,如平衡二叉树保证左右两边节点层级相差不会大于1,其查找的时间复杂度仅为 𝑙𝑜𝑔2𝑛log 2 n,在两边层级相同时,其查找速度接近于二分查找。1w条数据,平衡二叉树的查找最差情况下仅有14次,而普通树(也就是多叉树),如果每层都有100个节点,第二层可以接近1w(9999)条数据,其查找的时间复杂度也高的多原创 2024-06-29 22:07:11 · 983 阅读 · 0 评论 -
语言的数据结构:树与二叉树(二叉树篇)
上文说到了树,有人认为二叉树是树的每一个分支都有两个子节点。其实这也对。但二叉树在此基础上还做了限制。比如区别了左子树与右子树。也就是说,当二叉树的根只有一个孩子时,也需要知道这个是左孩子还是右孩子。就是因为这个原因,让二叉树的性能相对于树有了明显的提高。也让二叉树成了一个全新的概念,而不是树的一个特别情况而已。原创 2024-06-25 22:21:57 · 838 阅读 · 0 评论 -
C语言的数据结构:树与二叉树(树篇)
之前所学到的数据结构都是线性结构特征,所谓线性就是在结构上,将节点连接起来时,像一条线一样。如链表则是上一个节点包含下一个节点地址的指针,这样依次下去。而串、队列、栈则实现方式都依赖于链表或顺序表而实现,自然也是线性结构了。在我们的工作当中,树结构已经不陌生了,往往是一个数组,其中每条数据都是根节点,有一个id属性,标明其的唯一性。而每条数据有一个children属性,是一个数组,它包含着若干个子节点,子节点有一个 parentId,指向其父节点。就这样依次递归下去。原创 2024-06-23 18:04:51 · 588 阅读 · 0 评论 -
C语言的数据结构:串、数组、广义表
数组是一个有序集合,其成员类型相同,如int、char、double等等。在逻辑存储中,其每个元素都是相邻的,通过索引定位成员。在计算机内存中,数组的每个元素依然相邻。获取成员位置则通过索引*成员大小而得到。常用数组结构可以分为一维数组、二维数组、三维数组。一维数组: [1,2,3]二维数组:[ [1,2,3] , [4,5,6] , [7,8,9] ]三维数组:[不同维数的数组也可以实现转换,如一维数组 [1,2,3,4 ,5,6,7,8]。如果我们以4个元素为一个集合,则就相等于二维数组。原创 2024-06-12 12:30:09 · 1002 阅读 · 0 评论 -
C语言数据结构:栈与队列
栈与队列一般是一起讲的,它们都是通过数组实现的(线性表中的顺序表),不同的只是限制了插入和删除的位置。当然栈的插入与删除称为入栈和出栈,队列的称为入队和出队。之所以在数组的基础上实现这两个数据结构。是因为它们有特殊的应用场景,可以更好地完成任务。原创 2024-06-06 12:33:59 · 643 阅读 · 0 评论 -
C语言数据结构:线性表
线性表的顺序存储结构称为顺序表,之所以是顺序存储,是因为其逻辑地址上相邻的元素在物理地址上也相邻。由于其物理地址与逻辑地址相对应,所以每个元素上只用存储元素的值,查找元素可以通过索引*数据占用内存空间大小计算得到。可以用数组来表示。由于int 类型一般情况下占用内存为 4 字节,在内存地址中它们的分配空间是相临的,所以上面的3个物理地址(16进制)每个相差为4。// sizeof 是一个运算符,它用于计算其操作数的大小(以字节为单位)原创 2024-05-12 16:53:40 · 2478 阅读 · 0 评论