
数据结构
臣有一事不知当不当讲
这个作者很懒,什么都没留下…
展开
-
二、单链表的实现和遍历,循环链表、双向循环链表的实现
一、线性表的链式存储结构顺序存储结构线性表的最大问题:插入和删除需要移动大量的元素(时间复杂度高),如何解决呢?链式存储的定义:为了表示每个元素与其直接后继元素之间的逻辑关系,数据元素除了存储本身的信息之外,还需要存储其直接后继的信息。通过保存地址的关系将数据元素链接起来。Ai和Ai+1是线性表中的两个相邻的数据元素,在物理内存中无相邻关系。链式存储逻辑结构:基于链式存储结构的线性表,每个结点都包...原创 2018-04-07 18:07:03 · 1684 阅读 · 0 评论 -
六、递归的思想与应用
递归是一种数学上分而治之的思想:将原问题分解为规模较小的问题进行处理;分解后的问题与原问题的类型完全相同,但规模较小通过小规模问题的分解,能够轻易求得原问题的解问题的分解是有限的(递归不能无限进行)当边界条件不满足时,分解问题(递归继续进行)当边界条件满足时,直接求解(递归结束)递归在程序设计中的应用:递归函数: 函数体中存在自我调用的函数;——问题的分解 ...原创 2018-04-20 22:15:07 · 275 阅读 · 0 评论 -
八皇后问题
判断一个位置上能否放皇后,只需在三个方向上进行判断(下、右下、左下)。关键数据结构定义: int m_chessboard[N][N]; //定义棋盘enum{ N = SIZE + 2}; //10 * 10 的棋盘0表示位置为空,1表示皇后,2表示边界位置: struct Pos : public Object { Pos(int px=0, int py=...原创 2018-04-21 17:29:55 · 145 阅读 · 0 评论 -
七、排序,选择、冒泡、希尔、归并、快速排序实现
一、排序的基本概念排序:将“无序”的数据元素调整为“有序”的数据。排序算法的稳定性:如果待排列的排序表中有两个元素R1、R2,其对应的关键字Key1 = Key2,且在排序前R1就在R2的前面,如果使用某一种排序算法后,R1仍然在R2的前面,则称这个排序算法是稳定的,否则是不稳定的。注:对于不稳定的算法,只需举出一个范例即可正面不稳定性。多关键字排序:按照优先级,分别进行排序。排序中的关键操作:比...原创 2018-04-12 22:29:19 · 247 阅读 · 0 评论 -
线性表、数组类的创建
一、线性表的本质和操作什么是线性表?线性表是具有相同类型的n个数据元素的优先序列。线性表(List)的表现形式:1、零和多个数据元素的集合;2、数据元素在位置上是有序排列的;3、数据元素的个数是有限的;4、数据元素的类型必须相同。线性表的性质:a0为线性表的第一个元素,只有一个后继;a(n-1)为最后一个元素,只有前驱;除了这两个外,其他元素,既有前驱,也有后继。直接支持逐项访问和顺序存取。如何在...原创 2018-04-03 22:59:55 · 851 阅读 · 2 评论 -
数据结构开发框架设计
一、线性表、数组类的创建二、单链表的实现和遍历、循环链表、双向循环链表的实现三、栈的实现四、队列的实现五、字符串类的实现及子串查找算法六、递归七、排序,选择、冒泡、希尔、归并、快速排序实现八、树的实现和遍历九、二叉树的设计、增删查改数据、遍历十、图的设计和遍历...原创 2018-04-03 20:43:37 · 255 阅读 · 0 评论 -
四、队列的概念和实现
队列是一种特殊的线性表。队列仅能在线性表的两端进行操作:队头(Front):取出数据元素的一端;队尾(Rear):插入数据元素的一端。队列的特性——先进先出(First In First Out)队列的操作:创建、销毁、清空(clear())、进队列(add())、出队列(remove())、获取队头元素(front())、获取队尾元素(length())。父类队列的实现:template <...原创 2018-04-09 20:57:02 · 213 阅读 · 0 评论 -
三、栈的实现
栈的定义:栈是一种特殊的线性表(容器)。栈仅能在线性表的一端进行操作:栈顶(top):允许操作的一端;栈底(bottom):不允许操作的一端。栈的特性:后进先出(Last in First Out)栈的操作(函数):创建(stack())、销毁(~stack())、清空(clear())、进栈(push())、出栈(pop())、获取栈顶元素(top())、获取栈的大小(size())。templ...原创 2018-04-08 22:35:00 · 237 阅读 · 0 评论 -
智能指针专题
一、智能指针 内存泄漏是软件工程中常见的bug,在C++语言中,由于经常需要动态的申请堆空间,经常会忘记归还堆空间,C++语言没有垃圾回收机制(JAVA、Pathon有),所以指针无法控制所指向堆空间的生命周期。 普通软件 -->太慢、重启 服务器 -->越来越慢,无法使用 智能指针的概念:指针生命周期结束时,主动释放堆空...原创 2018-04-01 12:14:46 · 181 阅读 · 0 评论 -
编译错误、警告汇总(不断更新)
test.c:15: warning: incompatible implicit declaration of built-in function ‘malloc’test.c:26: warning: incompatible implicit declaration of built-in function ‘free’解决方法:加入头文件即可#include<stdlib.h>...原创 2018-05-16 18:26:12 · 218 阅读 · 0 评论