
基础数据结构
文章平均质量分 64
*闲鱼
一名摆烂的全能fw
展开
-
迷宫(maze)
首先肯定要输出二维数组,知道原数组棋盘,接着操作棋盘,紧接着输出棋盘。操作棋盘函数中首先判断首先棋盘是否是通路,什么是通路,是通路的话便是四个方向有至少一个方向可以走,走一步进行一次入栈,若找不到通路开始出栈,每走一步留一个足迹,知道最终走到出口。1)思考迷宫的结构体(元素):一个二维数组,一个移动的小人,小人结构体又存在移动的方向,小机器人的位置,移动的步数 而位置的结构体的又有行和列两个因素。2)因为迷宫需要用栈进行操作。此处用到栈,栈在以前文章中存在,此处不做展示。原创 2022-11-14 11:06:14 · 765 阅读 · 0 评论 -
队列(queue)
然而循环的概念又从何而来呢,很显然根据上面移动头指针的方式,将会浪费前面的内存,因此我们将队头和队尾连接起来,设置成一个环形,这样也就避免了浪费,连起来也就得到了所谓的循环概念。假如只是用单链表去实现链式队列,则队尾插入(尾插),队头出(头删),这时,我们会要求头删的时间复杂度O(1),尾插的时间复杂度为仍为O(1),但是如果是上述单链表,找到尾结点需要遍历整个单链表,尾插的时间复杂度为O(n),很显然不符合要求为此做一修改,但是在这里,我们用顺序表实现的不叫顺序队列,而叫循环队列。原创 2022-11-08 11:32:52 · 767 阅读 · 0 评论 -
栈(stack)
栈要求再一端进行插入和删除,我们用单链表去实现栈,则选择头删和头插(头插和头删的时间复杂度低,仅为O(1))栈:一种特殊的线性表,只能一端进行出入。也就是后进先出(last in first out==LIFO)顺序栈思路同顺序表相同,入栈出栈即为顺序表的尾插尾删。唯一改的一点:把顺序表结构做一改变。出入的一端叫栈顶,另一端叫做栈底。对栈插入数据叫做入栈:也叫做压栈。对栈删除数据叫做出栈:也叫做弹栈。原创 2022-11-01 15:37:08 · 81 阅读 · 0 评论 -
【双向链表】
pragma once //双向链表的结构体设计: typedef int ELEM_TYPE;//数据域 struct DNode * next;//直接后继指针 struct DNode * prior;//直接前驱指针 } DNode , * PDNode;////可实现的操作: //初始化 void Init_dlist(struct DNode * pdlist);原创 2022-10-22 22:24:53 · 585 阅读 · 0 评论 -
【单循环链表】
尾插,找尾结点,用指针p指向,通过判断,确实使用需要前驱的for循环,也就是说,申请一个临时指针p,执行头结点,此时,for循环,跑完,p指向尾结点。双向链表:和单链表相比,每个节点不仅仅只保存了一个节点的地址,还需要一个指针域保存上一个结点的地址。单循环链表:和单链表相比,尾结点的next域不再保存NULL,而是保存上一个结点的地址。2.找到待删除节点的前驱,用指针q指向,这里不用处理,因为这里pclist就可以代替q。1.找到待删除节点,用指针p指向(头删的话,待删除节点就是第一个有效节点)原创 2022-10-18 16:24:48 · 217 阅读 · 0 评论 -
【链表和顺序表比较】
因为顺序表插入和删除需要挪动元素,所以只有尾部操作才是O(1),其他都是O(n),单链表的结点通过指针链接,不需要挪动元素,所以插入和删除的时间复杂度都是O(1)原创 2022-10-18 16:10:13 · 298 阅读 · 0 评论 -
【单链表】
链表:结点与结点之间,逻辑相邻,物理不一定相邻。原创 2022-10-18 15:10:39 · 256 阅读 · 0 评论 -
【顺序表】
顺序表的操作需要挪动元素,插入的话,需要向后挪动元素,删除的话需要向前覆盖,时间复杂度O(n)效率不高,但是如果在尾部操作则效率极高,为O(1),因为尾部操作不需要挪动元素。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。每种均举一种做示例,便可以有其他位置插入删除的思路,除插入删除初始化之外的函数代码思路很明确,在此处不做思路讲解,不适合的场景:在头部和中间位置,删除和插入操作较多,频繁扩容,扩容代价高。顺序表:可动态增长的数组,要求数据是连续存储的。原创 2022-10-14 20:36:38 · 478 阅读 · 0 评论 -
数据结构的基础知识
概念:有且只有一个开始结点,有且只有一个结束节点,并且除了开始结点外,其余节点都有直接前驱,并且除了结束结点外,其余节点都有直接后继,可以表示成(a1,a2,a3···an)时间复杂度:算法中基本操作执行的次数和问题规模n之间的关系,一般记作O(f(n))空间复杂度:算法中需要的额外辅助空间和问题规模n之间的关系,一般记作O(f(n))从算法的效率分析:时间效率,空间效率。原创 2022-10-11 15:13:28 · 193 阅读 · 0 评论