数据结构
文章平均质量分 93
YuYunTan
只是一个学习的初步者
展开
-
数据结构(6)线性表之链表C++实现交集
题目算法算法动态演示算法具体实现运行结果题目已知单链线性表LALA和LBLB的元素按值非递减排列,假设利用两个线性表LALA和LBLB分别表示两个集合AA和BB(即线性表中的数据元素即为集合中的成员,现要求一个新的计划A=A⋂BA=A \bigcap B )。这就要求对线性表做如下操作:对于LALA,将不存在于线性表LBLB中而存在在线性表LALA中的数据元素从线性表LALA中删除掉。只要从原创 2016-03-15 23:17:37 · 1726 阅读 · 0 评论 -
数据结构(18)栈典型问题之C++实现括号匹配
导言括号匹配实现运行结果导言假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即【{}】或【([][])】等为正确的格式【[(])】或【[())】等均为不正确的格式。括号匹配思路: 左括号入栈,在未遇到右括号前,一直入栈,一旦遇到匹配的右括号,就一直弹出栈顶元素,直到栈空,若栈空,左括号与右括号已匹配完全,则完全匹配,反之则反。实现/* 函数结果状态代码 */#defin原创 2016-03-18 12:42:36 · 2514 阅读 · 0 评论 -
数据结构(19)栈典型问题之C++实现表达式求值
导言表达式求值算法算法具体实现导言表达式求值是程序设计语言中的一个最基本问题。本次实现采取“算符优先法”。表达式求值如何一个表达式都是由操作数、运算符和界限符组成的,我们称为单词。一般地,操作数既可以是常数也可以是被说明为变量或常量的标识符;运算符可以分为算术运算符、关系运算符和逻辑运算符3类;基本界限符有左右括号和表达式结束符等。我们把运算符和界限符统称为算符它们构成的集合命名为OP。我们得原创 2016-03-23 23:08:44 · 2542 阅读 · 0 评论 -
数据结构(1)数据结构的概念和定义
【参考资料:《数据结构》(C语言版)】 本人实现主要以C++或Java两种语言实现。数据结构定义简单来说,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算原创 2016-03-10 21:18:56 · 5811 阅读 · 0 评论 -
数据结构(4)线性表之链式表示
导言线性表线性链表实例插入和删除插入实现算法插入模拟动态演示删除算法删除结点实现算法删除结点的动态演示建立链表算法描述算法动态演示导言在上一次,我们讨论了线性表的顺序存储结构,特点是逻辑关系上相邻的两个元素在物理位置上也相邻,可随机存取,其存储位置可以用一个简单、直观的公式来表示。弱点:插入或删除操作,需要移动大量元素。而链式存储不求逻辑上相邻的元素物理位置上也相邻,插入删除不原创 2016-03-14 00:13:49 · 1990 阅读 · 5 评论 -
数据结构(2)线性表之顺序表
导言抽象数据类型线性表定义如下线性表的顺序表示和实现顺序表特点线性表顺序存储结构示意图线性表的动态分配顺序存储结构顺序表的插入和删除插入插入伪算法算法动态演示删除删除算法的动态演示插入和删除算法时间复杂度插入算法的平均期望删除算法的平均期望下一次文章是此文章概念伪代码的具体内容的实现导言首先说一下线性表是最基本、最简单、也是最常用的一种数据结构。 那么特点有哪些呢?原创 2016-03-12 23:08:22 · 1319 阅读 · 1 评论 -
数据结构(5)线性表之链表C++实现带头结点的单链表合并
题目算法原节点上合并算法动态演示算法具体实现运行结果合并新节点方式原题目第三篇文章的链表实现方式算法动态演示算法实现运行结果题目如何将有序链表合并成有序链表 假设头指针为LaLa和LbLb的单链表分别为线性表LALA和LBLB的存储结构,现要归并LaLa和LbLb得到单链表LcLc。 思路点拨 按照第三篇文章的思想,需要设立三个指针pa,pb和pc,其中p原创 2016-03-14 16:54:33 · 2812 阅读 · 0 评论 -
数据结构(20)栈与递归
导言递归n阶Hanoi塔问题算法解析汉诺塔3阶过程演示导言前面阶段用栈实现了表达式求值、括号匹配以及数字转换。这一次,我们介绍栈的另一个重要级别的应用-递归递归栈的重要应用是在程序设计语言中实现递归。一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称为递归函数。 递归是程序设计中强有力的工具。递归是程序设计中一个强有力的工具。其一,很多数学函数是递归定义的,例如: 阶乘原创 2016-04-09 22:57:20 · 4448 阅读 · 0 评论 -
数据结构(21)栈与递归应用之汉诺塔递归实现
导言题目n阶Hanoi塔问题算法三阶hanoi动态演示具体实现C 版本递归运行结果Java版本递归运行结果导言前面的文章介绍了栈和递归,以及举例了汉诺塔的实现原理,下面是实现汉诺塔的源码。题目n阶Hanoi塔问题假设有3个分别命名为X、Y、Z的塔座,在塔座X上插有n个直径大小不同、依小到大编号为1,2,……,n的圆盘,如下图。 现要求将X轴上的n个圆盘移到Z上并仍按同样的原创 2016-04-10 12:27:04 · 1972 阅读 · 2 评论 -
数据结构(17)栈典型问题之C++实现数值转换
导言数值转换算法具体实现包括顺序栈完整定义运行结果结束语导言前面学习了顺序栈的一些基本定义和函数操作原型,本章是以数值转换为例子,给出顺序栈所有函数的实现。数值转换十进制N和其他dd进制的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理: N=(N div d)×d+N mod dN=(N\ div \ d) \times d + N \ mod \原创 2016-03-18 11:54:33 · 4144 阅读 · 0 评论 -
数据结构(16)顺序栈的表示和算法表示
导言栈的存储表示方式栈的初始化操作栈顶指针和栈中元素的关系顺序栈的模块说明结语导言栈是线性表的一种特殊形式,故而有两种存储方式,现今讨论顺序栈栈的存储表示方式顺序栈(顺序存储结构) 利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。 top=0,表示空栈 设计过程中初始化空栈,是先为栈分配一个基本容量,然原创 2016-03-18 00:07:01 · 1448 阅读 · 0 评论 -
数据结构(15)栈的定义和抽象定义
导言栈定义栈的抽象定义导言从数据结构角度上看,栈也是线性表,特殊在于,其基本操作是线性表的子集,可称为限定性的数据结构。 从数据类型角度看,是与线性表大不相同的抽象数据类型栈定义栈(stack)又名堆栈,它是一种限定在表尾进行插入或删除操作的线性表。表尾被称为栈顶,相对地,把另一端称为栈底。 不含元素的空表称为空栈。 向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上原创 2016-03-17 23:13:56 · 3465 阅读 · 0 评论 -
数据结构(7)线性表之链表C++实现差集
题目算法算法的动态表示算法具体实现运行结果题目已知单链线性表LALA和LBLB的元素按值非递减排列,假设利用两个线性表LALA和LBLB分别表示两个集合AA和BB(即线性表中的数据元素即为集合中的成员,现要求一个新的计划A=A−BA=A-B )。算法void SubList_L(LinkList &La,LinkList &Lb,LinkList &Lc){ pa=La->next原创 2016-03-15 23:41:19 · 1478 阅读 · 0 评论 -
数据结构(8)线性表之静态链表
导言静态单链表的存储结构静态链表结构静态链表元素定位算法导言前段时间的文章,学习了线性表中的顺序表以及带头结点的单链表以及它们的操作和实现,现在学习另一种链表,叫静态链表。 用数组进行描述的链表叫静态链表。静态单链表的存储结构#define MAXSIZE 1000 //链表的最大长度typedef struct{ ElemType data; int cur;}co原创 2016-03-16 11:06:31 · 1002 阅读 · 0 评论 -
数据结构(9)线性表之循环链表介绍
导言循环列表循环列表结构单循环列表实现代码运行结果导言循环列表是链式存储结构的一种形式。它的特点从名字就可以清楚,“循环”。那么如何实现循环。 循环的实现很简单,只有表的最后一个结点的指针,不是指向NULL,而是指向了头结点,那么整个链表就能形成环。 特点:从表中任一结点出发均可以找到表中其他结点循环列表循环列表结构 循环链表操作和线性链表基本一致,除了算法中循环条件不是p或p-原创 2016-03-16 11:25:26 · 2841 阅读 · 0 评论 -
数据结构(10)线性表之双向链表
导言双向链表存储结构双向链表的示例图示例双向链表取得元素算法双向表插入算法双向表删除算法双向链表的实现源码运行结果导言双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。 双向表的结点有两个指针域,一个是其直接前驱,一个是其直接后原创 2016-03-16 15:46:15 · 1050 阅读 · 0 评论 -
数据结构(11)线性表之一元多项式表示及相加
导言一元多项式介绍抽象数据类型一元多项式定义相加如何实现结语导言符号多项式处理,是表处理的典型范例。而这章就是主要就本经典案例进行讨论。一元多项式介绍数学上,一个一元多项式pn(x)p_n(x)可以按照升幂写成pn(x)=p0+p1x+p2x2+...+pnxnp_n(x)=p_0+p_1x+p_2x^2+...+p_nx^n 它由n+1个系数唯一确定。因此在计算机里面,它可以由一个线性表原创 2016-03-16 20:43:54 · 4949 阅读 · 0 评论 -
数据结构(12)线性表之C++实现一元多项式相加
导言一元多项式表现形式部分算法描述具体实现代码代码实现第一种第二种代码的实现仅链表存储形式实现导言上篇文章,我们说明了一元多项式相加采取了什么形式和抽象定义数据类型定义以及实现一元多项式相加的方法,本节将用具体代码来实现一元多项式相加。一元多项式表现形式typedef struct{//项的表示,多项式的项作为LinkList的数据元素float coef;//系数int expn;/原创 2016-03-17 11:24:57 · 19438 阅读 · 5 评论 -
数据结构(13)线性表之C++实现一元多项式相减
导言源码导言一元多项式相减,其实是变向的一元多项式相加,只需要把减的另一个多项式,系数都取反,然后进行一元多项式相加就成。源码#define OK 1#define ERROR 0#define OVERFLOW -2#define TRUE 1#原创 2016-03-17 12:28:58 · 3024 阅读 · 0 评论 -
数据结构(14)线性表之C++实现一元多项式相乘
导言源码实现结果展示导言两个一元多项式相乘的算法,可以利用两个一元多项式相加的算法来实现,因为乘法可以分解为一系列的加法运算。源码实现#define OK 1#define ERROR 0#define OVERFLOW -2#define TRUE原创 2016-03-17 18:58:20 · 4566 阅读 · 0 评论 -
数据结构(3)线性表之顺序表C++实现
算法21动态演示运行结果算法22算法实现运行结果算法27算法实现运行结果算法2.1假设利用两个线性表LALA和LBLB分别表示两个集合AA和BB(即线性表中的数据元素即为集合中的成员,现要求一个新的计划A=A⋃BA=A\bigcup B )。这就要求对线性表做如下操作:扩大线性表的LA,将存在于线性表LBLB中而不存在在线性表LALA中的数据元素插入到线性表LALA中去。只要从线性表LB原创 2016-03-13 11:12:21 · 1796 阅读 · 1 评论