
数据结构实战开发教程
文章平均质量分 93
数据结构是一种具有一定逻辑关系,在计算机中应用某种存储结构,并且封装了相应操作的数据元素的集合。它包含三方面的内容,逻辑关系、存储关系以及操作。
Exp.Joker
这个作者很懒,什么都没留下…
展开
-
数据结构实战开发教程(八)选择排序和插入排序、冒泡排序和希尔排序、归并排序和快速排序、排序的工程应用示例
排序是计算机内经常进行的一种操作,其目的是将一组 “无序” 的数据元素调整为 “有序” 的数据元素。 按总评排序后为什么张无忌的排名比郭靖靠前呢?因为采用的不稳定排序法。 多关键字排序是否比单关键字排序更复杂?对于多关键字排序,只需要在比较操作时同时考虑多个关键字即可!!!class Sort;每次(例如第i次,i = 0,1,..., n-2)从后面n-i个待排的数据元素中选出关键字最小的元素,作为有序元素序列第i个元素。当插入第i(i≥ 1)个数据元素时,前面原创 2022-06-25 23:30:53 · 587 阅读 · 1 评论 -
数据结构实战开发教程(七)字符串类的创建、KMP 子串查找算法、KMP 算法的应用、递归的思想与应用
C++中的原生类型系统是否包含字符串类型?没有,通过标准库。 String.hString.cppstring.hstring.cpp思考:如何在目标字符串中查找是否存在指定的子串?如何在目标字符串S中,查找是否存在子串P ?示例: ABCDABD如何在目标字符串中查 找是否存在指定的子串?string.hstring.cpp第一轮,从主串的首位开始,把主串和模式串的字符逐个比较:显然,主串的首位字符是a,模式串的首位字符是b,两者并不匹配。第二轮,把模式串后移一位,从主串的第二位开始,把主原创 2022-06-25 23:17:00 · 1092 阅读 · 0 评论 -
数据结构实战开发教程(六)栈的概念及实现、队列的概念及实现、两个有趣的问题
StaticStack.hLinkStack.h使用单链表对象实现链式栈时,为什么选择在单链表的头部进行操作?如果选择在尾部进行操作是否也能实现栈的功能?先进先出( First In First Out )StaticQueue.hLinkQueue.h使用LinkList类实现链式队列是否合适,是否有更好的方案?时间复杂度较高LinkQueue.h栈和队列在实现上非常类似,是否可以用栈实现队列?用栈实现队列等价于用“后进先出”的特性实现“先进先出”的特性!反之,是否可以用队列实现栈?本质为,用队列“先进先原创 2022-06-25 22:54:26 · 331 阅读 · 0 评论 -
数据结构实战开发教程(五)再论智能指针、循环链表的实现、双向链表的实现、双向循环链表的实现、Linux内核链表剖析
再论智能指针、循环链表的实现、双向链表的实现、双向循环链表的实现、Linux内核链表剖析原创 2022-06-25 22:46:27 · 733 阅读 · 0 评论 -
数据结构实战开发教程(四)线性表的链式存储结构、单链表的具体实现、单链表的遍历与优化、典型问题分析(Bugfix)
顺序存储结构线性表的最大问题是:插入和删除需要移动大量的元素!如何解决? 为了表示每个数据元素与其直接后继元素之间的逻辑关系;数据元素除了存储本身的信息外,还需要存储其直接后继的信息。 头结点在单链表中的意义是:辅助数据元素的定位,方便插入和删除操作;因此,头结点不存储实际的数据元素 1. 从头结点开始,通过current指针定位到目标位置 2. 从堆空间申请新的Node结点原创 2022-06-25 22:29:30 · 703 阅读 · 0 评论 -
数据结构实战开发教程(三)线性表的本质和操作、顺序存储结构的抽象实现、顺序存储线性表的分析、数组类的创建
幼儿园老师总会让小朋友以同样的排队秩序出行。 线性表只是一个单纯的概念吗?如何在程序中描述和使用一个线性表?线性表是数据元素的有序并且有限的集合 线性表中的数据元素必须是类型相同的 线性表可用于描述排队关系的问题 线性表在程序中表现为一种特殊的数据类型 线性表在C++中表现为一个抽象类 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表中的数据元素。 ...原创 2022-06-25 22:09:18 · 729 阅读 · 0 评论 -
数据结构实战开发教程(二)泛型编程简介、智能指针示例、异常类构建、顶层父类的创建
如何为数据结构的学习选择合适的语言?支持泛型编程的语言最适合数据结构课程的学习?模板是泛型编程理论在C++中的实现函数模板支持参数的自动推导和显示指定 类模板在使用时只能显示指定类型 类模板非常适用于编写数据结构相关的代码 九、智能指针示例 1、内存泄漏(臭名昭著的Bug ) 动态申请堆空间,用完后不归还 C++语言中没有垃圾回收的机制(...原创 2022-06-25 09:43:10 · 366 阅读 · 0 评论 -
数据结构实战开发教程(一)数据的艺术、理解程序的本质、算法的时间复杂度
为什么要学习数据结构这门课程? 现代的程序设计语言开发包中都有数据结构和常用算法的完整实现,是不是掌握如何使用就可以了?为什么会有各种各样的程序存在?程序的本质是什么? 如何判断问题求解步骤的好坏? 优秀的开发者追求高质量的代码!1968年,由高纳德教授(Donald E.Knuth )开创一同年,在计算机科学的学位课程中出现(必修) ...原创 2022-06-25 09:25:23 · 540 阅读 · 0 评论