数据结构
文章平均质量分 78
啊啊啊啊啊啊啊阿
hello world
展开
-
数据结构(一)
一些基本概念和术语:数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合数据元素:是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录数据项:一个护具元素可以有若干个数据项组成,是数据不可分割的最小单位数据对象:是性质相同的数据元素的集合,是数据的子集数据结构:是相互之间存在一种或多种或多种特定关系的数据元原创 2016-11-10 23:02:25 · 231 阅读 · 0 评论 -
数据结构(9)——树
树的定义:树是n个结点的有限集。n=0时称为空树。在任意一棵非空树中:1.有且仅有一个特定的称为根结点2.n > 1时,其余结点可分为m个互不相交的有限集T1、T2、......Tm,其中每个集合本身有时一棵树,并且称为根的子树。如下图:子树T1,T2是上面的子树关于树的定义要注意以下两点:1.n>0时根结点是唯一的。2.m>0时,子树的个数没有限制原创 2016-11-24 21:31:37 · 385 阅读 · 0 评论 -
数据结构(八)—— 串
串的定义:串是由零个或者多个字符组成的有限队列,又名叫字符串。一般记为s = "a1a2......an"(n >= 0),其中s是串的名称,n是串的长度。子串与主串,串中任意个数的连续字符组成的子序列称为该串的子串,相应地,包含子串的串称为主串。子串在主串中的位置就是子串的第一个字符在主串的序号.串的比较:给定两个串:s=“a1a2......an”,t=“b1b2...原创 2016-11-23 18:17:34 · 291 阅读 · 0 评论 -
数据结构(七)——队列
队列的定义: 队列是只允许在一端进行插入操作,在另一端进行删除操作的线性表。允许插入的一端称为队尾,另一端为队头队列有两种存储方式,先来看队列的数序存储结构:循环队列定义:头尾相接的顺序存储结构称为循环队列。那怎么判断队列是空还是满呢?方法1:设置一个flag标志变量,当front==rear且flag==0时队列为空,当front==rear且flag=1时队列原创 2016-11-21 23:06:18 · 549 阅读 · 0 评论 -
数据结构(六)——栈的应用
栈的应用:递归栈有一个很重要的应用:在程序设计语言中实现了递归。下面介绍一个经典的递归例子:斐波那契数列。1,1,2,3,5,8,13,21,34,45,........这样的数列有很明显的规律,前两项和为第三项的值。用数学函数就是这样的:如果想打印前40位数字,我们首相想到的就是用迭代法来实现,这里代码就不演示了,而用递归就能比迭代更加简单一些。代码如下:int fun(原创 2016-11-19 12:05:51 · 304 阅读 · 0 评论 -
数据结构(五)——栈
栈的定义:栈是限定仅在表位进行插入和删除操作的线性表。允许插入和删除的一端称为栈顶,另一端为栈底,不含任何数据元素的栈称为空栈。栈的插入操作,叫做进栈,也叫做压栈,入栈,打个比方,像子弹如弹夹;栈的删除操作,叫做出栈,有的叫做弹栈,如同子弹出弹夹。示意图如下:栈的顺序存储结构及实现:typedef struct{ int data[MAXSIZE];原创 2016-11-18 22:35:30 · 301 阅读 · 0 评论 -
数据结构(三)——单链表的整表创建与删除
单链表整表的创建思路:1.说明一结点p和计数器变量i;2.初始化一空链表L;3.让L的头结点的指针指向NULL,即建立一个带头结点的单链表4.循环生成一新结点赋值给p;赋值;将p插入到头结点与千亿新结点之间;代码:(这里的赋值采用随机数赋值)void CreateListHead(LinkList *L,int n){ LinkList p原创 2016-11-14 22:41:02 · 425 阅读 · 0 评论 -
数据结构(十一)——二叉树的遍历和建立
二叉树的遍历是指从根节点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。其中关键词是访问和次序。二叉树的遍历方法1.前序遍历规则:若二叉树为空,则 空操作返回,否则先访问根结点,然后前序遍历左子树,在前序遍历右子树。下图的遍历顺序为ABDGHCEIF。2.中序遍历规则:若树为空,则空操作返回,否则从根结点开始,中序遍历根原创 2016-11-29 22:36:13 · 356 阅读 · 0 评论 -
数据结构(四)——循环链表与双向链表
什么是循环链表?将单链表中终端结点的指针端由空指针改为指向头结点,整个链表就形成了一个环,这种头尾相接的单链表称为循环单链表,简称循环链表。如下图:循环单链表和单链表的差异就在循环的判断条件上,原来是判断p->next是否为空,现在则是判断p->next是否等于头结点。双向链表:双向链表是在单链表的每个结点中,再设置再设置一个指向其前驱结点的指针域。原创 2016-11-16 22:09:16 · 288 阅读 · 0 评论 -
数据结构(三)——单链表的插入与删除
单链表的插入:假设存储元素e的结点为s,要实现p、p->next和s直间逻辑关系的变化,只需要将s插入到p和p->next之间即可。也就是说,让p的后继结点称为s的后继结点,s变成p的后继结点,如下图:这个操作的代码只需要两行: s->next = p->next; p->next = s;注意:这两行代码的顺序不能交换,否则s->next就等于s,插入也就失败了原创 2016-11-13 10:15:22 · 1273 阅读 · 0 评论 -
数据结构(二)——单链表的概念和读取元素
线性表的链式存储结构的特点:用一组任意存储单元存储线性表的数据元素,存储单元可以是连续的,也可以是不连续的。在链式结构中,不仅要存储数据元素,还有存储其后继元素的地址。我们将数据元素的域称为数据域,后者的域称为指针域,两者组成的数据元素ai的存储映像称为结点(Node)。通常我们将第一个结点的存储位置叫做头结点,规定最后一个结点的指针为空(通常用NULL或“^”表示)。下图分别原创 2016-11-12 09:48:38 · 1220 阅读 · 0 评论 -
数据结构(十)——二叉树
二叉树的定义:二叉树是n个结点的有限集合,该集合或者为空集,或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。如下图:二叉树的特点:1.每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点。2.左子树和右子树是有顺序的,次序不能任意颠倒。3.即使树中某结点只有一棵树,也要区分它是左子树还是右子树。二叉树的五种基本形态:1.空二原创 2016-11-27 19:15:48 · 571 阅读 · 0 评论