北京大学信息学院 ?版权所有或翻印必究 Page 数据结构与算法第三章 字符串主讲人 张铭北京大学信息科学与技术学院网络与信息系统研究所?版权所有或翻印必究主要内容 字符串抽象数据类型 字符串的存储结构和类定义 字符串运算的算法实现 字符串的模式匹配北京大学信息学院
空 串n=0的串子 串串中若干相邻字符组成的子序列主 串包含子串的串空格串仅含有空格字符的串(n不为0)串相等设 s1=a11…an1 s2=a12…an2 若 n1=n2且ai1=ai2(1<=i<=n1) 则 s1=s2例如: SubString( sub mander? 4 3) 求得 sub = ?ma
#
例如辗转相除法是求两个整数的最大公约数的数学算法它的解题策略是:以小数除大数得余数如果余数不为零则小数成被除数余数成除数除后得新余数若余数为零则此除数即为最大公约数否则继续辗转除不妨先拿两个正整数试一试:544和119544119的余数是6811968的余数是516851的余数是175117的余数是0所以544和119的最大公约数是17如何写出计算机算法呢计算机怎么进行辗转相除呢显然只能用计算机容
include<iostream.h>多用链表结点template<class ET>struct DblNode{ET data结点数据域存储该结点的数据部分DblNode<ET> next结点指针域指示下一个节点的位置DblNode<ET> back指向结点的前驱DblNode(){ next = NULL back = NULL }无参数结点构造函数用于未给定参数时结点的初始化}===
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级第二章 数据结构与算法2.4 栈和队列 1. 栈及其基本运算 (1)栈的基本概念 栈实际上也是线性表只不过是一种特殊的线性表在这种特殊的线性表中其插入与删除运算都只在线性表的一端进行即在这种线性表的结构中一端是封闭的不允许进行插入与删除元素另一端是开口的允许插入与删除元素即栈是限定在一端进行插入与删除
分支限界法与回溯法单源最短路径问题 解单源最短路径问题的优先队列式分支限界法用一极小堆来存储活结点表其优先级是结点所对应的当前路长 while (true) { for (int j = 1 j <= n j) if ((c[][j]<inf)(c[][j]<dist[j])) { 顶点i到顶点j可达且满足控制约束 dist[j]=c[]
第一章 数据结构3(1)算法是对操作的描述即操作步骤解决做什么和怎么做的问题2. 算法的描述(1)自然语言(2)形式语言用数学的方法可以避免自然语言的二义性(3)图形如N-S图流程图图的描述与算法语言的描述对应(4)算法语言即计算机语言程序设计语言伪代码1114 通常把运用数据结构来描述的数据元素之间的逻辑关系数据在计算机系统中的存储方式和数据的运算抽象成数据结构的三个层次: 数据的逻辑
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级第二章 数据结构与算法2.3 线性表及其顺序存储结构1.线性表的基本概念线性表是由n个数据元素组成的一个有限序列表中的每一个数据元素除了每一个外有且只有一个前件除了最后一个外有且只有一个后件即线性表或是一个空表显然线性表是一种线性结构数据元素在线性表中的位置只取决于它们自己的序号即数据元素之间的相对位置是线性的非空线性表
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级第二章 数据结构与算法2.1 算法的基本概念 1. 算法与数据结构的关系 程序设计主要包括两个方面一是行为特性的设计二是结构特性的设计行为特性的设计一般是指将解决问题过程中的每一个细节准确地加以定义并将全部的解题过程用某种工具完整地描述出来这一过程也称为算法的设计 下一页结构特性的设计是指为问题的解决确定
违法有害信息,请在下方选择原因提交举报