数据结构
文章平均质量分 52
Peter_tang6
这个作者很懒,什么都没留下…
展开
-
简单数据结构
数据结构分为抽象层、结构层和实现层,即逻辑结构、物理结构和运算结构。程序的运行效率就是用时间复杂度来表示,存储效率用空间复杂度表示。运算结构: 1、创建与销毁:分配资源,建立结构,释放资源 2、插入与删除:增加、减少数据元素 3、获取与修改:遍历、迭代、随机访问 4、排序与查找:算法应用这篇文章用数组来编程一、编写程序,用户输入任意数量个介于0到99之间的整数,按升序打印,不使用任何排序算法原创 2017-07-08 09:02:52 · 638 阅读 · 0 评论 -
循环buffer的学习
这几天在做一些笔试题的时候,遇见了一个关于读写循环缓冲区的题目,然后通过学习,这篇文章大致总结一下对循环buffer的认识。 首先循环buffer是一个可以无限循环读写的缓冲区,上图是一个初始化的循环缓冲区。当然,当循环缓冲区满了的时候是不允许继续写的,应为里面的内容还没被读取,如果满了还继续写的话就会覆盖我们还没读取到的数据,造成数据丢失,然后下面是一个对我们循环缓冲区的初始化typedef原创 2017-08-12 21:04:09 · 2927 阅读 · 3 评论 -
数据结构之快速排序
前面介绍了三种排序算法:冒泡排序,插入排序以及选择排序,这篇文章介绍最常用的排序算法,快速排序 快速排序即从待排序序列中任意选择一个元素,作为基准,然后将多有小于基准的元素放在基准之前,大于基准的元素放在基准之后,等于基准的元素随意,这个过程为分组,再以递归的方式分别对基准之前和基准之后的分组继续进行分组,直到每个分组内的元素个数不多于一个为止原创 2017-07-27 21:51:02 · 569 阅读 · 0 评论 -
数据结构之排序算法
上一篇学习了数据结构基本的查找算法,二分法和线性法,这篇文章谈一谈一些比较经典和常见的排序算法。冒泡排序冒泡排序即扫描数组,相邻元素两两比较,小数放左边,大数放右边,依次比较,即可完成排序。下面是一个冒泡排序的接口:原创 2017-07-26 21:59:32 · 298 阅读 · 0 评论 -
数据结构之查找算法
算法是找工作笔试面试的必考点,一般算法分为数值算法和非数值算法。数值算法一般用于工程的计算,比如研究导弹方向之类的工程非数值算法一般用于系统编程,比如研究程序的运行效率之类的编程这篇文章谈一谈查找算法,即在一系列数据中去查找我们所要的数据。线性查找所谓线性查找,即从头开始,一次将每一个元素与查找目标进行比较,或找到目标,或找不到目标线性查找的平均时间复杂度为O(N),对被查找的数据没有任何规律性的要原创 2017-07-26 21:20:17 · 513 阅读 · 0 评论 -
堆栈与队列
前面学习了队列和堆栈的操作,这篇文章将队列与堆栈结合起来学习,即用堆栈来实现队列操作队列的特点是先进先出,而堆栈的特点是先进后出,那么要用堆栈来实现队列的操作,这里我们使用两个堆栈的操作来实现队列的先进先出,即先将数据压入第一个堆栈,然后再将第一个堆栈的数据取出放入第二个堆栈,再从第二个堆栈中弹出数据。头文件/*********************************************原创 2017-07-24 18:58:44 · 630 阅读 · 0 评论 -
单链表的学习总结
前面学习了单链表的一些基本操作,这篇文章对在学习单链表的过程中遇到的一些问题做一些总结。初学单链表,很多东西都很难理解,因为之前的C语言基础的指针这块不是很熟悉,对于指针的操作很模糊,在一边百度一边看视频学习的过程中,渐渐加深了对指针的理解,以及对程序的模块化编程的学习。分不清楚头结点和头指针我学习的是没有头结点的,即只有一个头指针,在写代码的时候我总是会把头指针误认为一个头结点,然后定义另一个指针原创 2017-08-01 10:58:55 · 7404 阅读 · 0 评论 -
数据结构之单链表操作二
上一篇文章介绍了单链表的一些基本操作,包括节点的创建与销毁,链表的初始化与摧毁,以及头插法和尾插法添加节点和正反向打印链表等,这篇文章深入介绍单链表其他的操作。链表的中间数据插入void inse_data(LIST* list, int data){ LIST_NODE* node = create_node(data); LIST_NODE* p = NULL;原创 2017-08-01 10:01:40 · 366 阅读 · 0 评论 -
堆栈操作
了解数据结构的都清楚,堆栈操作很重要,堆栈存储数据与取出数据是先进后出,就像一个垃圾桶,最先倒进去的垃圾最后倒出来,而堆栈有两种操作方式:1、基于顺序表的堆栈:初始化空间,通过栈顶指针表示当前可以接受新数据的位置。 2、基于链式表的堆栈:每个节点随压入随创建,随弹出随销毁,通过栈顶指针标识出最后压入的元素。堆栈的操作主要是压入和弹出,下面针对上面两种操作方式给出相关程序。基于顺序表/*******原创 2017-07-09 08:25:02 · 2215 阅读 · 0 评论 -
队列操作
前面学习了基于顺序表以及链式表的堆栈操作,这里的链式表指单向链表,这篇文章学习同样是基于顺序表以及链式表的队列操作。 队列与堆栈的不同之处在于队列是先进先出,即队列的两边都可以进行操作,一头压入,另一头弹出。这就需要用到头指针和尾指针两个指针,为了避免指针指向空的内存,因此这两个头尾指针可以循环,而且当队列处于空或者满状态的时候,头尾指针均可能重合。 基于顺序表的实现,初始化空原创 2017-07-24 18:30:44 · 800 阅读 · 0 评论 -
数据结构之二叉树
二叉树的一些概念这里简单说一下二叉树的遍历有三种,前序,中序和后序,前序即按照DLR(结点->左子树->右子树)的顺序遍历,中序则是LDR,后序则是LRD。完全二叉树,除了最底层,各层节点数均为最大值,同时最下层的节点集中在左侧,且中间不能有间隔。满树即为全满的树。树的存储结构:顺序存储和链式存储。顺序存储即从上到下,从左到右依次存放,完全二叉树可用数组,一层一层放,非完全二叉树先用无效的数据原创 2017-08-05 19:27:55 · 399 阅读 · 0 评论