随笔分类 - 数据结构
摘要:弗洛伊德算法是解决任意两点间的最短路径问题,也称多源最短路径问题。 核心算法: for (int k = 1; k <= n; k++) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (e[i][j] > e[i
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 typedef char ElemType; 9 10 //线索存储标志位 11 //Link(0)表示指向左右孩子的指针 12 //Thread(1)表示指向前驱后继的线索 13...
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 typedef char Elemtype; 8 9 typedef struct BiTNode{ 10 char data; 11 struct BiTNode *lchild,*rchild; 12 }BiTN...
阅读全文
摘要:队列即可以用链表实现也可以用顺序表实现,跟栈相反的是,栈一般用顺序表实现而队列用链表来实现,简称为链队列,我们将队头指针指向链队列的头结点,队尾指针指向终端结点(头结点不是必要的,但为了方便操作我们加上了头结点)。 一、队列的链式存储 1、链队列的存储结构 2、初始化一个队列 创建一个队列要完成两个
阅读全文
摘要:栈:是限定仅在表尾进行插入或删除操作的线性表,表尾段称为栈顶,表头段称为栈底,栈有称后进先出线性表。栈有顺序栈和链栈。 一、栈的顺序存储 1、顺序栈的结构定义 2、创建一个空栈 3、元素入栈 4、元素出栈 5、清空一个栈(将栈顶指针指向栈底指针) 6、销毁一个栈 7、返回栈的当前容量 栈的应用(进制
阅读全文
摘要:之前讨论的链式存储结构的结点中只有一个指示直接后继的指针域,由此,从某个结点出发只能顺着指针往后找其他的结点,若要查找结点的直接前驱,只能从表头出发,因此为了克服单链表的这种缺点,引入了双向链表。双向链表结点中有两个指针域,其一指向直接后继,另一指向直接前驱。 1、双向链表的存储结构 双向链表的循环
阅读全文
摘要:问题描写叙述: 魔术师手中有A、2、3……J、Q、K十三张黑桃扑克牌。在表演魔术前,魔术师已经将他们依照一定的顺序叠放好(有花色的一面朝下)。魔术表演过程为:一開始,魔术师数1,然后把最上面的那张牌翻过来,是黑桃A;然后将其放到桌面上;第二次,魔术师数1、2;将第一张牌放到这些牌的最以下,将第二张牌
阅读全文
摘要:有环的定义:链表的尾结点指向了链表中的某个结点,如下图所示 判断是否有环,两种方法: 方法1:使用p、q两个指针,p总是向前走,但q每次都从头开始走,对于每个节点看p走的步数和q是否一样,如上图所示:当p从6走到3时,共走了6步,此时若q从出发,则q只需要走两步就到达3的位置,因而步数不相等,出现矛
阅读全文
摘要:假设头指针为La、Lb单链表分别为线性表LA、LB的存储结构,现在要合并La、Lb得到单链表Lc 链表合并实例: 运行结果:
阅读全文
摘要:1、概念:用数组描述的链表称为静态链表,这种描述方法叫做游标实现法。 2、静态链表—插入元素 3、静态链表—删除元素 4、返回L中数据元素的个数 总结:静态链表的优缺点 优点:在插入和删除操作中,只需要修改游标,不需要移动元素,从而改进了在顺序存储结构中插入和删除操作需要移动大量元素的缺点。 缺点:
阅读全文
摘要:1、头插法创建单链表(生成的链表中结点的顺序与输入的顺序相反) 2、尾插法创建单链表(与输入的顺序相同) 3、综合实现
阅读全文
摘要:线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中任意元素。线性表链式存储结构特点是用一组任意的存储单元存储数据元素,为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储本身信息外,还要存储指示其直接后继的信息(即
阅读全文
摘要:1、字符串的表示形式 在C程序中,可以用两种方法访问一个字符串:(1)用字符数组存放一个字符串,然后输出该字符串;(2)用字符指针指向一个字符串。 和前面介绍的数组属性一样,string 是数组名,它代表字符数组的首元素的地址。string[4]代表数组中序号为4的元素(它的值是字母v),实际上st
阅读全文
摘要:1、数组元素的指针 一个变量有地址,一个数组包含若干元素,每个数组元紫都在内存中占用存储单元,它们都有相应的地址。指针变量既然可以指向变量,当然也可以指向数组元素(把某元素的地址放到一个指针变量中)。所谓数组元索的指针就是数组元素的地址。引用数组元素可以用下标法(如a[3]),也可以用指针法,即通过
阅读全文
摘要:一、地址与指针的概念 为了说清楚什么是指针,必须清楚数据在内存中是如何存储的,又是如何读取的。 如果在程序中定义了一个变量,在对程序进行编译时,系统会给这个变量分配内存单元,编译系统根据程序中定义的变量类型分配一定长度的空间(整型变量分配4个字节,单精度浮点型4个字节,字符型变量1个字节)。内存区的
阅读全文
摘要:1、插入: 2、删除: 2、修改: 3、普通合并: 4、有序合并:
阅读全文
摘要:1、合并线性表 集合A和集合B分别用两个线性表LA和LB表示,求A∪B并用线性表LA表示。从LB中逐一取出元素,判断该元素是否存在LA中,若不在则将该元素插入LA中。 2、有序线性表的合并 已知线性表LA和LB中数据元素分别按非递减顺序排列,现要求将它们合并成一个新的线性表LC,并使得LC中的元素也
阅读全文
摘要:线性表的基本操作 定义线性表结构体(空间分配,静态:数组;动态:指针) 一、线性表的顺序存储结构 1、初始化—创建线性表 2、线性表顺序存储结构上的查找(按位置查找值、按值查找位置) 按位置查找值,首先确保位置是合法的,若查找成功,返回位置元素的详细信息,否则返回错误信息 按值查找位置,需要将线性表
阅读全文

浙公网安备 33010602011771号