![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
饭_团
这个作者很懒,什么都没留下…
展开
-
顺序表(一)
顺序表是线性表的一种,用一组地址连续的存储单元依次存储线性表的数据元素,它的逻辑地址相邻,物理地址也相邻,(参照一维数组)。线性表是最基本也是最简单的数据结构。顺序表的优点:简单、支持随机访问、查找方便、尾插和尾删效率高。顺序表的缺点:数据的插入和删除慢(需要挪动后面的数据)。接下来我们先分析一下顺序表的结构以及删除和插入,最后实现顺序表的常见操作。顺序表的结构如下图所示,它有两个...原创 2019-07-24 11:25:12 · 485 阅读 · 0 评论 -
二叉查找树
二叉树:是每个结点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”,二叉树常被用于实现二叉查找树和二叉堆。完全二叉树:若二叉树的高度为h,除了第h层外,其它各层(1~h-1)的结点数都达到了最大个数,第h层有叶子节点,并且叶子结点都是从左至右依次排布,这就是完全二叉树满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。平衡二叉树:有名AVL树,它是...原创 2019-08-27 10:55:39 · 110 阅读 · 0 评论 -
两个有序链表的合并
合并两个有序链表,就需要对链表中所有的元素进行遍历,将链表plist2往链表plist1中插入,当链表plist1已经遍历完,链表plist2仍然不为NULL,将链表plist2的剩余部分插入plist1 中。插入过程如图所示:代码实现:Node* Combine(List plist1,List plist2){ Node*p = plist1; //被插入的链表 Node*...原创 2019-07-27 20:49:08 · 99 阅读 · 0 评论 -
单链表逆置
单链表的逆置是一个经常被问到的面试题,也是一个非常基础的问题。比如一个链表是这样的:1->2->3->4->5通过逆置后成为5->4->3->2->1。指路:单链表的插入、删除。最容易想到的方法是遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。首先...原创 2019-07-27 17:40:19 · 678 阅读 · 0 评论 -
结构体、联合体以及枚举
结构体、联合体以及枚举类型是我们在学习C/C++中经常遇到的一些数据结构,接下来我们就来认识和区别一下他们。结构体:(struct)用途:把不同的数据组合成一个整体——自定义数据类型C语言:在C语言中,结构体指的是一种数据结构,是C语言中聚合数据类型的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体的成员可以包含其他结构体,也可以包含指向自己结构体类型的指...原创 2019-07-31 18:23:22 · 1730 阅读 · 1 评论 -
顺序栈
栈是一种只能在表的一端进行插入和删除数据操作的线性表,它遵循先进后出、后进先出的原则,栈是一种线性表,所以栈也有线性表的两种存储结构(顺序存储结构和链式存储结构)。利用一组地址连续的存储单元依次存放栈底到栈顶的数据元素,栈底位置固定不变,栈顶位置随着入栈和出栈操作而变化。顺序栈的插入和删除按照入栈(压栈),出栈(清栈),规则:先进后出,后进先出#include<st...原创 2019-07-25 19:52:34 · 218 阅读 · 0 评论 -
单链表
单链表:同一组任意存储单元存储线性表的数据元素(逻辑地址相邻,物理地址不一定相邻)单链表的优点:插入和删除效率高单链表的缺点:查找慢、数据密度小,内存碎片严重pos的位置必须在链表的合理位置,pos< 0 时返回false。对链表进行遍历,遍历完成仍没有找到pos位置。单链表的结构体:单链表的结构体由两部分组成,int data数据域和Node* next指针域,指针域保...原创 2019-07-25 14:11:55 · 370 阅读 · 0 评论 -
顺序表(二)
上一篇博客写了一个定长的顺序表,定长的顺序表存储时由于长度的限定,使用不是很方便,在定长顺序表的基础上进行优化,使用动态扩容函数实现动态顺序表。使用malloc() 函数对存储数据区域进行动态分配,每次插入时,使用判满函数 IsFull() 进行检查,结果返回真时,调用扩容函数 Inc(),扩容函数使用realloc() 函数进行二倍扩容 。#include<stdio.h&g...原创 2019-07-24 21:56:35 · 76 阅读 · 0 评论 -
树的一些相关计算
博主最近面试被问到一些树中的计算问题,就做了一些统计,1、n个节点的二叉树一共有多少种?2、n层二叉树的第n层最多少个?f(n) = 2^(n-1)3、一个深度为k的满二叉树的总节点个数为多少?f(k) = 2^(k-1)4、有n个节点的完全二叉树的深度为?h(n) = (log2n)+15、一个完全二叉树的节点为n,则该二叉树的叶子节点为多少?f(n) =...原创 2019-09-14 20:34:33 · 2181 阅读 · 1 评论