数据结构
鏡花水月灬
这个作者很懒,什么都没留下…
展开
-
二叉树结点的两种写法
定义结点typedef struct BTNode{ int data; struct BTNode *lchild; //指向左孩子结点指针 struct BTNode *rchild; //指向右孩子结点指针}BTNode;以上述二叉树结点为例,有两种写法①BTNode BT;②BTNode *BT;BT=(BTNode*)malloc(sizeof(BTNode));①就是制作一个结点。②的执行过程:先定义一个结点的指针BT,然后用函数malloc.原创 2021-01-13 15:08:53 · 718 阅读 · 0 评论 -
线性表中的元素循环位移问题
线性表中的元素循环位移问题算法设计思想循环位移问题中,会将左移过程中越界的部分置于原线性表的尾部。同理,右移过程中则会将越界部分置于原线性表的首部。以左移为例做下列分析:1、线性表的元素循环左移,越界部分为A,为越界部分为B。原序列即为AB。2、这样循环左移就可以视为是将原序列(AB)转换成序列(BA)3、先将A序列置为逆序,即(-A)4、再将B序列置为逆序,即(-B)5、此时原序列转化为了((-A)(-B))6、最后将整个序列在置为逆序,最终得到(BA)问题概述设将n(..原创 2021-01-12 20:17:20 · 534 阅读 · 0 评论 -
ArrayList集合的缺点和解决办法
在ArrayList眼中所有的元素类型都是Object,所以ArrayList不是类型安全的。ArrayList集合在使用值类型数据时,其实就是在不断地做装箱和拆箱工作,需进行大量的计算。 装箱:把值类型打包到Object引用类型的一个实例中 拆箱:指从对象中提取值类型例如:foreach(Animal item in arrayAnimal)在这行代码执行(拆箱)时,只会输出Animal类型的对象。如果在此时ArrayList中有其它类型的对象,在运行(Run)过程...原创 2020-05-26 16:00:56 · 338 阅读 · 1 评论 -
数据结构10——排序
排序(插入排序、交换排序、选择排序、归并排序、分配排序)排序算法的稳定性:假定待排序的记录集中,存在多个具有相同键值的记录,若经过排序,这些记录的相对次序仍保持不变,则称这种排序算法是稳定的;否则,称为不稳定。排序的分类根据排序数据在内存中还是外存中: 内排序:在排序的整个过程中,待排序的所有记录全部被放置在内存中 外排序:由于待排序的记录个数太多,不能同时放置在内存,而需...原创 2019-12-23 11:14:42 · 242 阅读 · 0 评论 -
数据结构9——查找
查找 静态查找:不涉及插入和删除操作的查找 适用于查找集合一经生成,便只对其进行查找,而不进行插入和删除操作;或经过一段时间的查找之后,集中的进行插入和删除等修改操作; 动态查找:设计插入和删除操作的查找 适用于查找与删除操作在同一个阶段进行,;例如当查找成功时,要删除查找到的记录,当查找不成功时,要插入被查找的记录。查找的结构:面...原创 2019-12-21 19:18:06 · 220 阅读 · 0 评论 -
数据结构8——图(2)
1、最小生成树(最小代价生成树)Prim法:(加点法) 时间复杂度:O(n*n)——适用于稠密图 辅助数组:lowcost(=arc[0][i])和adjvex(=0)(0是始点)void prime(MGraph G){ for(int i=1;i<G.vertexNu;i++){//若有n个点,需要执行...原创 2019-11-29 22:16:56 · 171 阅读 · 0 评论 -
数据结构7——图(1)
图的遍历关键问题:选取遍历顶点:从编号最小的顶点开始 某个起点可能到达不了所有的其他顶点:多次调用从某顶点出发遍历图的算法 避免死循环:设置访问标记数组visited[n] 如何选取下一个要访问的顶点:<1>深度优先遍历<2>广度优先遍历1)深度优先遍历(DFS):需要借助栈来完成2)广度优先遍历(BFS):需要借助队列来完成图的存储1.邻接矩阵...原创 2019-11-28 14:49:08 · 427 阅读 · 0 评论 -
数据结构6——二叉树(2)
一、二叉树中其他的操作统计树中结点的数目(左子树中节点的数目+右子树中节点的数目+1(根结点))template<class T>int BiTree<T>::count(BiNode<T>* root){ int number=0; if (root==NULL) number=0; else number=count(root-&...原创 2019-11-27 18:52:58 · 121 阅读 · 1 评论 -
数据结构5——二叉树(1)
树:结点的度:结点所拥有的子树的个数。树的度:树中各结点度的最大值。叶子结点:度为0的结点,也称为终端节点。分支节点:度不为0的结点,也成为非终端节点。结点所在的层数:根节点的层数为1;对其余任何结点,若某结点在第k层,则其孩子结点在第k+1层。树的深度:树中所有节点的最大层数,也称高度。树的访问:前序遍历,后序遍历,层序遍历树的存储:顺序存储:双亲表示方法...原创 2019-11-26 20:14:43 · 505 阅读 · 0 评论 -
数据结构4——数组和字符串
字符串存储结构:顺序串:用数组来存储串中的字符序列链接串:用链接存储结构来存储串(1)非压缩形式(2)压缩形式模式匹配1、BF算法int BF(char S[ ], char T[ ]){ i=0; j=0; while (i<S.Length()&&j<T.length()) { if...原创 2019-11-10 10:47:05 · 176 阅读 · 0 评论 -
数据结构小结1
开学九周,学期过半了,给自己做个小结。真的看到了和大佬们的差距,不可否认学ACM的大佬们真的要比我接触的东西多的多,见多识广,可以看出他们在学习数据结构时候的轻松自如,而且对自己有更高的要求。看看自己大二入学前三四周很松懈,学的数据结构又难度挺大的,后来做起题来很吃力,然后加紧了重视。真的是这两周发现自己落下的东西太多了,开始补救。之前从oj上做的题三四周都没把第一部分链表的给做完,这两周...原创 2019-10-30 12:25:20 · 71 阅读 · 0 评论 -
数据结构3——栈和队列
栈和队列相较于线性表和链表的难度跨度,这一部分要简单一些。栈和队列是线性表和链表的特殊形式使用的,且操作相对简单。栈只有入栈和出栈操作,且这两个操作都是在栈顶完成的。栈的操作特性:后进先出顺序栈类的声明:const int MAX_SIZE=100;template <class T>class seqStack{ public: ...原创 2019-10-27 17:13:09 · 140 阅读 · 0 评论 -
数据结构2——链表
循环链表特点:首尾相接的链表。可以从任一节点出发,访问链表中的所有节点。判断循环链表中尾结点的特点: q->next==first头插法template <class T> CycleLinkList<T>:: CycleLinkList(T a[ ], int n,int k) { fi...原创 2019-10-13 23:22:39 · 99 阅读 · 0 评论 -
数据结构1
程序=数据结构 + 算法逻辑结构:线性结构、树型结构、图结构、(集合)存储结构的分类:顺序结构和链式结构算法的性质:有穷性、确定性、可行性、输入、输出算法的描述方法:自然语言、流程图、程序设计语言、伪代码等算法分析:算法运行所需要的时间(时间复杂性);算法运行所需要的时间(时间复杂性)时间复杂度:事前估计法(多用)、事后统计法事前估计法:最好情况估计、最坏情况估计...原创 2019-09-17 18:03:48 · 79 阅读 · 0 评论