数据结构(c语言描述)
qq418674358
热爱嵌入式开发,热爱编程,喜欢对自己的学习过程进行总结,并乐于分享
展开
-
数据结构学习笔记(4.线性表之双向链表)
本节知识点:原创 2013-08-19 23:31:08 · 1844 阅读 · 2 评论 -
数据结构学习笔记(7.栈的应用及简单的计算器)
本节知识点:1.栈的应用一:编译器中成对符号匹配的检查!如:括号 :() 、{} 、[] 引号:'单引号' 、 “双引号” 这些符号匹配情况的检查!算法思路:这里有一个问题是需要注意的:就是单引号和双引号在使用的时候,是需要借助转移字符的!示例代码: main.c文件:#include <stdio.h>#include <stdli...原创 2014-03-22 11:42:12 · 3125 阅读 · 0 评论 -
数据结构学习笔记(8.循环队列与链队列)
本节知识点:1.队列的概念: a.队列也是一种特殊的线性表,队列仅在线性表的两端进行操作,队头:取出数据元素的一端、队尾:插入数据元素的一端! b.队列的性质:先进先出(FIFO) 对于普通的链式队列和顺序队列来说,具体的实现方式跟链式栈和顺序栈一样,只不过无所谓哪边是队列头、哪边是队列尾。因为时间复杂度必然有一端为O(1),另一端为O(N)!对于这样的复杂度,我们就应该想办法原创 2014-03-31 23:20:58 · 1738 阅读 · 0 评论 -
数据结构学习笔记(12.递归的应用之八皇后回溯算法)
本节知识点:1.递归与回溯: a.回溯算法的基本思想:从问题的某一种状态出发,搜索可以到达的所有状态。当某个状态到达后,可向前回退,并继续搜索其他可达状态。当所有状态都到达后,回溯算法结束! b.对于回溯算法,在前面KMP匹配中就利用了这个思想,只不过当时KMP中定义了一个node数组(起到了一个地图的作用,记录了每种回溯情况的可能)。而这节中,是利用函数的活动对象保存回溯算法的状态数据,原创 2014-04-16 23:17:14 · 6079 阅读 · 7 评论 -
数据结构学习笔记(10.KMP模式匹配算法)
本节知识点:1.KMP模式匹配算法,是为了避免普通字符串匹配算法中,没有必要的重复比较而设计的!在普通字符串比较中,通常有很多重复性的比较,KMP就是利用一个next数组当做索引,来避免这些重复性的比较!2.对于具体算法的分析,本节不做过多叙述,详细可以参考 一书中的P135页。本节只做代码的保存!示例代码:/********************************************原创 2014-03-31 18:40:35 · 1558 阅读 · 2 评论 -
数据结构学习笔记(11.递归的应用之常用递归算法)
本节知识点:原创 2014-04-16 17:44:42 · 2128 阅读 · 0 评论 -
数据结构学习笔记(6.顺序栈及链式栈)
本节知识点:1.数据结构中栈的定义:栈就是一种特殊的线性表,满足后进先出(LIFO)规则的线性表,既然是线性表,就存在顺序栈和链式栈!2.栈仅能在线性表的一端进行操作:栈顶(允许操作的一端),栈底(不允许操作的一端)如图:3.顺序栈是在顺序表的基础上进行了一层代码封装而实现的,链式栈是在单链表的基础上封装得到的!需要注意的是,对于顺序表我们要将,顺序表尾部当做栈顶,因为如果放在头部的话,出栈和入栈原创 2014-03-19 14:51:43 · 2402 阅读 · 6 评论 -
数据结构学习笔记(3.线性表之循环链表)
本节知识点:1.为什么选择循环链表:因为有很多生活中结构是循环的,是单链表解决不了的,比如星期、月份、24小时,对于这些循环的数据,循环链表就体现出它的优势了。2.循环链表的结构:循环链表就是从头结点后面开始,尾节点的next不再是NULL了,而是头结点后面的第一个链表元素,如上图。3.如何创建一个循环链表:步骤一:步骤二:无论是头插法,还是尾插法都没有关系原创 2013-08-19 18:15:36 · 1968 阅读 · 0 评论 -
数据结构学习笔记(1.大O表示法和顺序表)
最近在看国嵌唐老师的数据结构视频,觉得还不错,所以就把笔记记录下来本节知识点:1.数据之间的逻辑结构: 集合结构:数据元素之间没有特别的关系,仅同属相同集合 线性结构:数据元素之间是一对一的关系 树形结构:数据元素之间存在一对多的层次关系 图形结构:数据元素之间是多对多的关系2.数据之间的物理结构 顺序存储结构:将数据存储在地址连续的存原创 2013-08-06 01:02:30 · 4774 阅读 · 2 评论 -
数据结构学习笔记(3.线性表之静态链表及柔性数组)
本节知识点:1.静态链表到底是什么:链表就是链式存储的线性表,但是它分为动态和静态两种,所谓动态就是长度不固定,可以根据情况自行扩展大小的,静态链表就是长度大小固定的,链式存储的线性表。2.本节的静态链表和顺序表很像(其实和数组也很像),准确的来说就是利用顺序表实现的,只是这个顺序表,不是顺序排列的,是通过一个next变量,连接到下一个变量的。如图:3.唐老师说静态链表是在原创 2013-08-16 00:27:55 · 2331 阅读 · 2 评论 -
数据结构学习笔记(5.线性表之双向循环链表)
在前两节的基础上,实现双向循环链表。本节知识点:1.双向循环链表的结构:上面就是双向循环链表的结构图,对于双向链表的插入有3个位置,A、B、C。但是在插入第一个元素的时候(其实插入第一个元素的时候,就是循环建立的时候),有些特殊,所以就画了一个图,如下:本节代码:DcLinkList.c:/************************************原创 2013-08-26 15:29:38 · 1965 阅读 · 1 评论 -
从无头单链表中删除节点及单链表的反转操作
问题描述:假设有一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除。一般链表的删除需要顺着头结点向下找到当前待删节点的前驱节点,然后让前驱节点指向后驱节点就行了。这里,没有头结点,就没办法找到前驱结点。但我们可以采用“狸猫换太子”的做法。我们把当前结点“看成”是前驱结点,把后续节点当做待删结点删除(删除之前,记下后续结转载 2013-08-12 00:24:59 · 2171 阅读 · 0 评论 -
数据结构学习笔记(2.线性表之单链表)
笔记:使用c语言实现可以复用的单向链表~~~~原创 2013-08-09 01:08:56 · 3806 阅读 · 5 评论 -
数据结构学习笔记(9.栈和队列的特殊实现)
本节知识点:1.使用两个链式栈实现链式队列:代码如下:LinkQueue.c文件:/***************************************************************************************文件名:LinkQueue.c头文件:LinkQueue.h 时间: 2013/04/02作者: Hao功能: 利用两个链式栈 实原创 2014-04-02 17:05:56 · 1491 阅读 · 0 评论