
数据结构
文章平均质量分 58
suen1987
这个作者很懒,什么都没留下…
展开
-
2.2线性表的顺序表示和实现
线性表的顺序表示是指用一组地址连续的存储单元依次存储线性表的数据元素。假设每个元素占用l长度的存储空间,并以所占的第一个单元的存储地址作为数据元素的存储位置。则数据元素的第i个元素的存储位置LOC(ai)和第i+1个数据元素的存储位置LOC(a(i+1))之间满足下列关系:LOC(a(i+1)) = LOC(ai)+ l一般来说线性表第i个元素的存储位置为:LOC(ai) = LOC(原创 2013-07-30 15:10:04 · 675 阅读 · 0 评论 -
3.3栈与递归的实现
栈还有一个重要的应用是在程序设计语言中实现递归。原创 2013-08-08 22:26:36 · 756 阅读 · 0 评论 -
第3章栈和队列
栈和队列是两种重要的线性结构。从实际结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表,因此,可称为限定性的数据结构。但从数据类型的角度看,它们是和线性表大不相同的两类重要的抽象数据类型。由于它们广泛应用于软件系统,因此在面向对象的程序设计中,它们是多型数据类型。3.1 栈3.1.1 抽象数据类型栈的定义栈是只限定在表尾进行原创 2013-08-07 16:02:13 · 523 阅读 · 0 评论 -
2.3线性表的链式表示和实现
从上一节的讨论中我们线性表的顺序存储结构特点:逻辑关系上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中的任意一个元素,它的存储位置可用一个简单、直观的公式表达。然而,从另一面,它的特点也造成了这种存储结构的弱点:在做插入和删除时候需要大量的移动元素。本节我们讨论线性表的另一种表示方法——链式存储结构,由于链式存储结构不要求逻辑上相邻的元素在物理位置上相邻,因此,它没有顺序存储结构的弱点原创 2013-07-30 17:02:35 · 1320 阅读 · 0 评论 -
链式存储结构的头指针和头结点
参考:点击打开链接定义LinkList L;则L为链表的头指针。 L=(LinkList) malloc (sizeof(LNode)); //创建一个结点此处返回给L的是一个指针,并且赋给了头指针L->next=null; //这里说明我创建了一个头结点,即同时运用了头指针和头结点,不过感觉头结点用处不大,所以一般还是不用最好。 假设L是LinkList原创 2013-08-09 15:28:37 · 4146 阅读 · 0 评论 -
3.4队列
3.4.1抽象数据类型队列的定义 和栈相反,队列是一种先进先出(FIFO)线性表。它只允许在表的一端进行插入,在另一端进行删除元素。这和我们的排队是类似的,先来排在前面,办完事先走。在队列中允许插入的一端称为队尾(rear),允许删除的一端称为对头(front)。队列的操作和栈类似,也有8个,不同的是队列是一个在表尾一个在表头,栈在栈顶。3.4.2链队列——队列的原创 2013-08-09 15:42:04 · 610 阅读 · 0 评论 -
3.5离散时间模拟
在日常生活中,我们经常会遇到许多为了公共秩序而需要排队的情景。这样一类活动中模拟程序通常需要用到队列和线性表之类的数据结构,因此是队列的典型应用之一。例如银行业务的模拟程序: 假设某银行有4个窗口对外接待客户,由于每个窗口每次只能服务一个客户,所以当人多的时候所有窗口都有人的时候,新来的客户需要排队等候;如果4个窗口中有至少有一个是没人的那么客户来就可以办理业务。原创 2013-08-11 22:42:48 · 983 阅读 · 0 评论 -
第6章 树和二叉树
6.1 树的定义和基本术语 树型结构是一种非常重要的非线性数据结构,其中以树和二叉树最为常用,直观来看,树是以分支关系定义的层次结构。树在计算机领域得到广泛应用,如在编译程序中,可用树型结构来表示源程序的语法结构。在数据库系统中,树型结构也是信息的重要组织形式之一。 树是n(n >=0)个结点的有限集。 在任意一棵非空树中:1. 有且仅有一个特定原创 2013-08-26 10:12:10 · 566 阅读 · 0 评论 -
6.2 二叉树
在讨论一般树的存储结构及操作之前,我们首先分析下一种称为二叉树的抽象数据类型。6.2.1、二叉树的定义 二叉树(Binary tree)是另一种特殊的树形结构,它的特点是每个树结点最多只能有两棵子树,并且二叉树的子树有左右之分,其次序不能任意颠倒。抽象数据类型二叉树的定义如下:ADT BinaryTree{ 数据对象D:D是具有相同特性的数据元素的集合。原创 2013-08-27 11:24:38 · 822 阅读 · 0 评论 -
数据结构之Status
当函数返回值为函数结果状态代码时,函数定义为Status类型。函数结果状态码:TRUE 1、FALSE 0;OK 1、ERROR 0;INFEASIBLE -1、OVERFLOW -2status类型的函数的返回值可以是字符串类型吗?如: return "A>B成立"; 答:不能。还有一种用法:完整的话,你还应该告诉我定义这个函数之前,代码里有“类原创 2013-08-28 15:19:23 · 7859 阅读 · 0 评论 -
3.2栈的应用举例
由于栈具有后进先出的特性,所以致使栈成为程序设计中的有用工具。3.2.1 数制转换十进制数N和其它d进制数的转换是计算机实现计算的基本问题,解决算法很多,其中一个简单的算法原理如下:N = (N div d)X d + N mod d(其中div为整除运算,mod为求余运算)例如:10进制与8进制之间的转换;现在编一个满足下列要求的程序:对于一个任意输入的非负10进制数,打原创 2013-08-08 20:13:08 · 1311 阅读 · 0 评论 -
第2章 线性表——2.1 线性表的类型定义
线性表是最常用且最简单的数据结构。线性表中的数据元素可以是很多种简单的字符、字母等和稍微复杂其它种。例如:26个英文字母的字母表:(A,B,C,D,E……Z)是一个线性表,表中的数据元素是单个字母字符。稍微复杂的线性表中,一个数据元素可以由若干个数据项组成。在这种情况下,常把数据元素称为记录(record),含有大量记录的线性表又称为文件(file)。例如:一个学校的学生信息登原创 2013-07-29 16:45:02 · 883 阅读 · 0 评论 -
目录(数据结构C语言)
第一章 绪论1.1 什么是数据结构1.2 基本概念和术语1.3 抽象数据类型的表示与实现1.4 算法和算法分析1.4.1 算法1.4.2 算法设计的要求1.4.3 算法效率的质量1.4.4 算法的存储空间需求第2章 线性表2.1 线性表的类型定义2.2 线性表的顺序表示和实现2.3 线性表的链式表示和实现原创 2013-07-27 15:40:22 · 1076 阅读 · 0 评论 -
第1章 1.1 什么是数据结构
1.1 什么是数据结构 一般来说,用计算机解决一个具体问题,大致需要经过下列几个步骤:首先,要从具体问题抽象出一个适当的数学模型,然后设计一个解决这个数学模型的算法,最后编出程序。寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。例如:可以用数学语言来描述的,求梁架结构中应力的数学模型为线性方程组;预报人口增长情况的数学模型为原创 2013-07-28 09:50:43 · 872 阅读 · 0 评论 -
1.3 抽象数据类型表示和实现
抽象数据类型(abstract data type 简称ADT):是指一个数据模型及其定义在该数据模型上的一组操作。和数据结构的形式定义相对应,抽象数据类型可用以下三元组表示:(D,S,P)其中,D是数据对象,S是D上的关系集,P是对D的基本操作集。一般抽象数据类型定义的格式:ADT 抽象数据类型名{数据对象:数据关系:基本操作:}ADT 抽象数据类型名原创 2013-07-28 16:35:25 · 1493 阅读 · 1 评论 -
1.2 基本概念和术语
数据:是对客观事物的符号表示,在计算机中是指所有能输入计算机并被计算机程序处理的符号总称。数据元素:是数据的基本单位,在计算机程序中通常作为一个整体来处理数据对象:是性质相同的数据元素的集合,是一个数据的子集。数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。根据数据元素之间关系的不同特性,通常有4个基本结构:(1)集合(2)线性结构(3)树形结构(4)图原创 2013-07-28 10:07:04 · 449 阅读 · 0 评论 -
1.4 算法和算法分析
例:在如下的所示的NXN矩阵相乘的算法中,“算法”运算是原创 2013-07-29 11:30:08 · 543 阅读 · 0 评论 -
第四章 串
计算机上的非数值处理的对象基本上是字符串数据。在较早的程序设计语言中字符串是作为输入输出的常量出现的。随着语言加工程序的发展,产生了字符串处理。这样,字符串就作为一种变量类型出现在越来越多的程序设计语言中,同时也产生了一系列字符串的操作。字符串简称为串。在汇编和语言的编译程序中,源程序和目标程序都是字符串数据。在事务处理程序中,顾客的姓名和地址以及货物的名称、产地和规格等一般也是作为字符串处理的。原创 2013-08-19 09:15:04 · 660 阅读 · 0 评论 -
4.2 串的表示和实现
如果在程序设计语言中,串只是作为输入或输出变量存在,那么只需存储此串的值,即字符序列即可。在多数非数值处理的程序中,串也可以以变量的形式出现。串有三种机内表示方法,分别如下:4.2.1 定长顺序存储表示 类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列。按照预定义的串长,为每个串变量分配一个固定长度的存储空间,则可用定长数组描述如下# define原创 2013-08-19 11:11:03 · 991 阅读 · 0 评论 -
2.4一元多项式的表示及相加
在这里只简单介绍下一元多项式的表示:对于线性表的两种存储结构,一元多项式也可以有两种存储表示方法。在实际应用中采用哪一种,要视多项式作何种运算而定。若多项式只做求值运算,不做改变系数和指数的运算,则采用类似顺序表的顺序存储结构即可,否则采用链式存储表示。原创 2013-08-07 13:45:18 · 785 阅读 · 0 评论 -
2.3线性表的链式表示和实现——2.3.2 循环链表,2.3.3双向链表
循环链表是单向循环的,就是尾结点指向其头结点;结点只有后继指针,没有前驱。双向的就是不但尾结点指向头结点,并且结点还有前驱指针,是双向指向。其它操作参考书籍上。原创 2013-08-06 16:13:31 · 551 阅读 · 0 评论 -
二叉树遍历
遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。设L、D、R分别表示遍历左子树、访问根结点和遍历右子树, 则对一棵二叉树的遍历有三种情况:DLR(称为先根次序遍历),LDR(称为中根次序遍历),LRD (称为后根次序遍原创 2013-10-11 10:19:46 · 617 阅读 · 0 评论