大话数据结构
常用数据结构解析
hope10003
这个作者很懒,什么都没留下…
展开
-
第八章:6.二叉排序树
本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:所谓优势只不过是比别人多深入思考一点而已。二:二叉排序树的优势:*插入、删除的效率和实现元素查找的效率都很高,时间复杂度都为O(logN);三:二叉排序树的创建:当需要对集合{62, 88, 58, 47, 35, 73, 51, 99, 37, 93}做查找,我们则应该在创建此集合时就考虑二叉树结构,而且时排好序的二叉树:四:二叉排序树,又称二叉查找树。它或者是一棵空树,或者使具有以下性质的二叉树:1.若它的左子树不为空,原创 2020-12-19 22:48:55 · 418 阅读 · 1 评论 -
第八章:3.顺序查找表
本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:顺序查找(Sequential Search):又叫线性查找,是最基本的查找技术,它的查找过程是:从表中第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值比较,若某个记录的关键字和给定的值相等,则查找成功,找到所查的记录;如果直到最后一个(或第一个)记录,其关键字和给定的值比较都不相等时,则表示表中没有所查的记录,查询不成功。二:设置“哨兵”编程技巧:1.无哨兵顺序查找:缺点是每次都要检查是否越界for(i=1;i<原创 2020-12-19 21:43:01 · 341 阅读 · 1 评论 -
第八章:2.查找概论
本篇文章参考的是《大话数据结构》,感谢作者程杰先生。第八章:2.查找概论:一:查找(Searching):就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素。查找表(Search Table):是由同一类型的数据元素(或记录)构成的集合,如下图。关键字(Key):是数据元素中某个数据项的值,又称为键值,用它可以标识一个数据元素。也可以标识一个记录的某个数据项(字段),称之为关键码,如(1)和(2)所示。若此关键字可以唯一的标识一个记录,则称为主关键字(Primary K原创 2020-12-19 21:39:24 · 132 阅读 · 1 评论 -
第4章:3.栈的链式存储结构及其实现
本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:栈的链式存储结构,简称链栈,由于单链表有头指针,而栈顶指针也是必须的,所以让其合二为一即可;如下图,把栈顶放在单链表的头部。二:对于链栈来说,基本不存在栈满的情况,除非系统内存已经满了;对于空栈来说,链表原定义是头指针为空,那么链栈其实就是 top == NULL 的时候;三:链栈的结构代码;/* 链栈结构 */typedef struct StackNode{ SElemType data; struct St原创 2020-12-07 23:39:16 · 996 阅读 · 0 评论 -
第4章:2.两栈共享空间
本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:两栈共享同一空间,即数组,数组有两个端点,两个栈有两个栈底,让一个栈的栈底为数组的时段,即下标为0处,另一个栈的栈底为数组的末端,即数组长度n-1处,这样,两个栈如果增加元素,就是两个端点向中间延伸。二:如何判断栈满?1.普通情况下,当top1与top2见面时,为栈满,即 top1 + 1 = top2;2.极端情况,若栈2是空栈,栈1的top1等于n-1,就是栈1满了;当栈1为空时,top2等于0时,为栈2满。三:代码:/*原创 2020-12-06 11:41:35 · 598 阅读 · 0 评论 -
第4章:1.栈的定义及顺序栈
一:栈的定义:1.栈是限定仅在表尾进行插入和删除操作的线性表。栈顶:允许插入和删除的一端;栈底:不允许插入和删除的一端;空栈:不含有任何数据元素的栈;2.栈又称为后进先出(last in first out)的线性表,简称LIFO结构;栈的插入操作,叫做进栈(push),也称压栈,入栈;栈的删除操作,叫做出栈(pop),也称弹栈;二:栈的顺序存储结构及其实现:typedef int SElemType; /* SElemType类型根据实际情况而定,这里假设为int *//* 顺序栈原创 2020-12-06 11:16:30 · 276 阅读 · 0 评论 -
第3章:4.循环链表和双向链表
本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:循环链表:将单链表中终端节点的指针端由空指针改为指向头结点,就使整个单链表形成了一个环,这种头尾相接的单链表称为单循环链表,简称循环链表(circular linked list)。图示:二: 将下面两个单循环链表合并:过程如下:p = rearA->next; // 保存A表的头结点,即① rearA->next = rearB->next->next; //将本是指向B表的第一个节点(不是头结点)原创 2020-11-29 10:21:24 · 109 阅读 · 0 评论 -
第3章:3.静态链表
本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一.对于没有指针的语言怎么实现单链表的功能?有人想出来一个方法,用数组代替指针,来表示单链表。真是不得不佩服他们的智慧呀!二:数组描述的链表叫静态链表(另游标实现法):首先让数组的元素都是由两个数据域组成,data和cur。也就是说,数组的每一个下标对应一个data和一个cur。数据域data用来存放数据元素;而游标cur相当于单链表中的next指针,存放该元素的后继在数组中的下标。结构体表示如下:/* 线性表的静态链表存储结构 */t原创 2020-11-29 09:25:12 · 59 阅读 · 0 评论 -
第3章:2.线性表的链式存储结构(单链表)
本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:头指针与头结点的异同:头指针:*头指针是指链表指向第一个节点的指针,若链表有头结点,则是指向头结点的指针;*头指针具有标识作用,所以常用头指针冠以链表的名字;*无论链表是否为空。头指针是链表的必要元素。头结点:*头结点是为了操作的统一和方便而设立的,放在第一元素的节点之前,其数据域一般无意义(也可存放链表的长度)*有了头结点,对在第一元素节点前插入节点和删除结点,其操作与其他节点的操作就统一了。*头结点不一定是链表的必须要素。二原创 2020-11-29 09:00:10 · 247 阅读 · 0 评论 -
第3章:1.线性表的顺序存储结构(数组)
本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:线性表:零个或多个数据元素的优先序列。二:数组:随机存取数据;三:线性表的顺序存储结构优缺点:优点: *无需表示元素的逻辑关系而再开辟内存; *可以快速存取表中任意位置数据;缺点: *插入和删除需要操作大量元素; *当线性表长度变化较大时,难以确保存储空间的容量; *造成系统中大量碎片;四:线性表的链式存储:五:头指针与头结点的异同:代码:线性表的顺序存储结构的插入与删除#include <stdio.h>原创 2020-11-29 08:39:46 · 325 阅读 · 0 评论 -
第2章:算法
本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:算法的特性:有穷性;确定性;可行性;输入;输出;二:好的算法设计要求:正确性;可读性;健壮性;高低率:低存储;三:算法的时间复杂度(大O阶):O(n):线性阶O(1):常数阶O(n^2):平方阶O(log n):对数阶...原创 2020-11-29 08:28:30 · 69 阅读 · 0 评论 -
第1章:数据结构绪论
本篇文章参考的是《大话数据结构》,感谢作者程杰先生。尼采:“人们无法理解他没有经历过的事情”一图胜千言。一.基本概念和术语:1.数据:2.数据元素:3.数据项:4.数据对象:5.数据结构:...原创 2020-11-29 08:22:25 · 114 阅读 · 0 评论