数据结构
学习数据结构
你看看这个C还有++
C了个++
展开
-
堆和栈的区别
堆和栈的区别:堆是由低地址向高地址扩展,栈是由高地址向低地址扩展堆中的内存需要手动申请和释放,栈中内存会自动申请自动释放,存放参数,局部变量等内存堆中频繁调用malloc和new,会产生内存碎片,降低程序效率,而栈由于其先进后出的特性,不会产生内存碎片堆的分配效率低,而栈的分配效率比较高,具体原因是:栈是操作系统提供的数据结构,计算机底层对栈提供一系列支持,分配专门的寄存器存储栈的地址,...原创 2019-10-27 14:38:59 · 261 阅读 · 0 评论 -
链式二叉树
前面已经展示过一些二叉树的基本概念,接下来基于链表的存储结构实现一个链式二叉树。 此处是通过递归的方法创建。//链式存储方式--孩子表示法typedef char Datatype;typedef struct BTnode { struct BT...原创 2019-05-29 16:03:14 · 192 阅读 · 0 评论 -
栈、队列的基本操作
栈数组方法实现、利用动态扩容Stack.htypedef int DataType;typedef struct Stack { DataType* array; int capacity; int size; //代表栈内有效元素数量,也代表栈顶指针}Stack;//初始化void StackInit(Stack* ps);//压栈void StackPu...原创 2019-05-18 13:47:08 · 168 阅读 · 0 评论 -
排序算法
常见的排序算法分类 分类:非线性比较类:交换类排序(快速排序和冒泡排序)、插入类排序(简单插入排序和希尔排序)、选择类排序(简单选择排序和堆排序)、归并排序(二路归并排序和多路归并排序)。线性非比较类:计数排序、基数排序和桶排序。 总结:在比较类排序中,归并排序号称最快,其次是快速排序和堆排序,两者不相伯仲,但是有一点需要注意,数据初始排...原创 2019-06-04 18:15:44 · 163 阅读 · 0 评论 -
栈、队列
栈1.什么是栈 栈:一种特殊的线性表,只允许在固定的一端进行元素的插入和删除操作。进行数据插入和删除的一端称为栈顶,另一端的称为栈底。栈中的元素遵循 “先进后出” (Last In First Out)原则。 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶 &...原创 2019-05-18 12:08:17 · 110 阅读 · 0 评论 -
栈实现队列、队列实现栈
栈遵循“后进先出”的规则、队列遵循“先进先出”的规则、如何使他们互相实现对方的功能、以下给出具体的图解与代码 栈实现队列图解思路代码实现首先,实现一个栈的入栈、出栈等基本操作typedef int DataType;typedef struct Stack {...原创 2019-05-21 11:46:42 · 232 阅读 · 0 评论 -
建堆、堆排序
我们前面已经了解过什么是堆,现在我们来根据它的特征来研究如何建一个堆。1.建堆图解思路初始化,申请空间,给堆赋值代码实现typedef int Datatype;//创建堆的结构体typedef struct Heap { Datatype* array; int capacity; int size;}H...原创 2019-05-22 14:01:39 · 1484 阅读 · 0 评论 -
堆
什么是堆 堆:如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为 小堆(或大堆)...原创 2019-05-21 17:12:46 · 142 阅读 · 0 评论 -
树、二叉树
此前,我们了解并学习了一些相关的数据结构,下面我们介绍一种新的数据结构——树1.树的基本概念 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 &nb...原创 2019-05-21 16:14:11 · 893 阅读 · 1 评论 -
双向循环链表的基本操作
实现链表的增删查,清空,销毁#pragma oncetypedef int DataType;//链表的节点结构typedef struct DLinkList { struct DLinkList* next; struct DLinkList* prior; DataType data;}DLinkList,*DLNode;// 链表的初始化 void DL...原创 2019-05-05 18:14:03 · 392 阅读 · 0 评论 -
链表的基本操作
实现链表的增删,翻转LinkList.h#pragma once typedef int DataType;//链表节点信息typedef struct LinkList { DataType Pdata; struct LinkList* next; }LinkList,*PNode; //链表的结构信息,给一个头指针保存链表第一个节点的地址typede...原创 2019-04-28 15:14:02 · 201 阅读 · 0 评论 -
数据结构-时间复杂度和空间复杂度
衡量算法的好坏 1.正确性:算法应当满足具体问题的要求。 2.可读性:算法主要是为了人的阅读交流,其次才用于机器的执行。 3.健壮性:当输入非法数据时,算法也能适当地做出反应或进行处理,而不是产生莫名其妙的结果。 4.效率和低存储量需求:效率就是算法执行的时间。存储量需求是算法执行过程中需要的最大存储空间。时间复杂度 T(n)=O(f(n))T(n)=O(...原创 2019-04-21 22:16:27 · 180 阅读 · 0 评论