![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Xucc_
这个作者很懒,什么都没留下…
展开
-
(静态)顺序表及相关函数实现
顺序表 定义:用一段地址连续的存储单元依次存储数据元素的线性结构 地址连续的空间:一般情况下采用数组,数组有静态数组和动态数组之分,所以顺序表分为静态顺序表和动态顺序表顺序表函数实现顺序表初始化顺序表首插元素顺序表首删元素顺序表尾插元素顺序表尾删元素顺序表任意位置插入元素顺序表任意位置删除元素删除顺序表中任意指定元素(第一个)删除顺序表中任意指定元素(...原创 2018-03-11 17:57:09 · 1698 阅读 · 0 评论 -
二叉树相关操作
二叉树是非常重要的一种数据结构,对于二叉树概念不是很清楚的可以参考 二叉树基本概念与遍历相关操作在这里,我们表示节点的方式为孩子表示法typedef struct TreeNode { // 树结点保存的数据 TreeNodeType data; // 该结点左子树 struct TreeNode* lchild; // 该结点右子...原创 2018-05-04 17:01:04 · 1197 阅读 · 0 评论 -
多出口路径带环最短路径迷宫求解
问题引出顾名思义,有多条出口的迷宫,迷宫内部各路径有交叉,成环,求其最短路径 例如: 解题思路整体思路和多出口不带环迷宫最短路径求解一样,只是这次更改的是标记函数 Mark 与 判断是否能够落脚函数 Canstay 因为要判断路径是否带环,以前单一的将走过的路径标记为2已经不能满足我们的需求了 所以这次需要将走过的块标记为当前步数,即每块走过的位置都一个不同的标记,这样,我们就...原创 2018-04-23 23:18:38 · 1651 阅读 · 0 评论 -
多出口迷宫最短路径求解
问题引出有的时候,除了只有一条出口的迷宫外,我们还会遇到多出口迷宫求解问题,即 有多条出口的迷宫,迷宫内部各路径不交叉,不成环,求其中最短的一条路径例如: 关于单出口的简单迷宫求解,大家可以参考 简单迷宫求解解题思路因为迷宫中存在多条路径,所以这次我们采用自己构造栈的方式进行求解构建两个栈,一个栈为 cur_path,保存当前走过的路径,另一个栈为 ...原创 2018-04-23 23:11:34 · 2700 阅读 · 0 评论 -
简单迷宫求解
问题引出迷宫求解是栈的典型例子,今天我们来讨论的是简单的迷宫求解问题,即 迷宫只有一个出口,迷宫内的路径不带环,不相交例如: 回溯法在正式求解之前,我们要知道一个很重要的概念回溯法:对一个包括有很多个结点,每个结点有若干个搜索分支的问题,把原问题分解为若干个子问题求解的算法;当搜索到某个结点发现无法再继续搜索下去时,就让搜索过程回溯(回退)到该节点的前一个结点,继...原创 2018-04-23 22:59:16 · 1716 阅读 · 0 评论 -
链表实现的数据结构栈及相关函数
栈一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操 作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。不含任 何元素的栈称为空栈,栈又称为后进先出的线性表。分类由于站结构是一种线性结构,所以它的实现方式也有很多种,最常见的是链表和顺序表实现的栈结构,本篇介绍的是基于带头节点双向单链表栈结构 话不多说,上代码LinkStack.h#pra...原创 2018-04-13 13:26:52 · 1519 阅读 · 0 评论 -
判定元素出栈、入栈顺序的合法性-----队列和栈面试题5
问题元素出栈、入栈顺序的合法性,即给定一组输入数据,再给定一组输出数据,判断输入数据能否通过入栈出栈操作的到出栈数据,判断它们顺序的合法性 如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)思路参数: input[]:入栈顺序 output[]:出栈顺序 len1:入栈数组长度 len2:出栈数组长度 返回值: 1,表示可以得到 0,表示不能通过栈...原创 2018-04-22 22:56:18 · 1405 阅读 · 0 评论 -
使用一个数组实现两个栈-----队列和栈面试题4
问题使用一个数组来实现两个栈结构,即共享栈思路对于这个问题,我们有两种解法 1. 方法一: 定义两个区间(0,top1],[top2,0),分别表示连个栈的范围,两个栈由两侧向中间生长,栈满的条件为 top1 == top2 2. 方法二: 将数组从中间平均一分为二,栈由中间向两侧生长 明显方法一优于方法二,因为方法二可以做到最大程度的利用到数组的所有空间,没有浪费,所以这里...原创 2018-04-22 22:47:13 · 1592 阅读 · 0 评论 -
最小栈问题------队列和栈面试题1
一.问题 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值)的时间(即每次栈顶元素都是这个栈的最小值),而且时间复杂度为O(1)有关于栈的详细讲解可以移步 顺序表实现的数据结构栈 链表实现的数据结构栈及相关函数就这个问题,有如下两种思路方法一每次都入栈两个元素,第一个是本来入栈的元素,第二个是当前的最小值,对应的,每次出栈也是两...原创 2018-04-17 23:13:52 · 1510 阅读 · 0 评论 -
两个栈实现一个队列-----队列和栈面试题2
问题 两个栈实一个队列虽然这种问题在实际开发中压根不会出现,但是解决这个问题可以使我们对栈和队列的理解更上一层楼思路定义一个栈为 input,另一个为 output 入队列时,要将 output 中所有元素出栈到 input 中,然后再入栈 input 出队列时,要将 input 中所有元素出栈到 output 中,然后再出栈 output方法实现seqs...原创 2018-04-18 20:38:54 · 1500 阅读 · 0 评论 -
两个队列实现一个栈-----队列面试题3
问题 使用两个队列实现一个栈这是 两个栈实现一个队列的孪生问题,对该问题解法不清楚的可以移步 两个栈实现一个队列—–队列面试题2使用两个队列实现一个栈比其他的孪生问题来说,能复杂一些思路设置一个队列为 queue1, 另一个为 queue2入栈时,将元素入队列非空队列出栈时,将非空队列的前 n-1 个元素出队列到另一个空队列中,然后出栈元素就是此时非空...原创 2018-04-22 22:32:38 · 1404 阅读 · 0 评论 -
双向链表及相关函数实现
双向链表双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,双向链表比起单链表有天生的优势 不熟悉单链表的同学们可以参考这篇文章(链表及相关函数实现),看完之后在和双向链表的操作进行对比,高下立见DLinklist.c#pragma once // 双向带环链表#include <stdio.h>#include &...原创 2018-04-04 17:02:04 · 1632 阅读 · 0 评论 -
队列(链表实现)概念及相关函数
一. 链表队列特殊的单链表,只在单链表上进行头删尾插的操作二. 相关函数对于队列具体概念不太清楚的同学可以参考 顺序表实现的数据结构队列 由顺序表实现的队列程序结构相对来说比较简单,可以巩固一下基础链表定义的队列结构#define Datatype char // 队列存储数据的类型// 队列的节点typedef struct LinkNode {...原创 2018-04-16 22:18:01 · 2132 阅读 · 0 评论 -
队列(顺序表实现)概念及相关函数
一. 队列概念只允许在一端进行数据插入,在另一端进行数据删除操作的特殊线性表 队首:进行数据删除操作的一端 队尾:进行数据插入操作的一端 特性:先入先出(FOFI)二. 顺序队列两种定义方式顺序表定义的队列数据结构#define Datatype char // 队列中存储数据的类型#define MAX_SIZE 100 // 队列最大长度typ...原创 2018-04-16 22:07:13 · 1849 阅读 · 0 评论 -
顺序表实现的数据结构栈
关于栈的详细讲解我就不多说了,如果有不明白的移驾 链表实现的数据结构栈及相关函数实现本篇着重介绍的是使用顺序表实现的栈结构,话不多说SeqStack.h#pragma once #include <stdlib.h>#include <stddef.h>#include <errno.h>#define Datatype c...原创 2018-04-14 17:57:05 · 1592 阅读 · 0 评论 -
关于链表的一些经典问题以及相关面试题
关于链表的基本操作以及常见操作大家可以移步 链表及相关函数实现当然,链表除了这些基本操作之外,还有很多很有意思以及很有深度的问题,在这里,给大家介绍一些这方面的问题逆序打印链表不允许遍历链表,在pos节点前插入新节点约瑟夫环问题求解单链表逆置单链表冒泡排序将两个有序链表合并成一个有序链表查找单链表的中间节点寻找倒数第k个节点删除倒数第k个节点判断单链表是否带环...原创 2018-04-01 10:33:58 · 1642 阅读 · 0 评论 -
链表及相关函数实现
链表 链表是一种链式存储的线性表,用一组地址任意的存储单元存放线性表的数据元素,称存储单元为一个节点链表的分类链表分类依据 单双链表 是否带环 是否带头结点 所以链表可以细分为如下八种 单向带环带头节点链表 单向带环不带头节点链表 单向不带环带头节点链表 单向不带环不带头节点链表 双向带环带头节点链表 双向...原创 2018-03-19 08:18:24 · 4395 阅读 · 2 评论 -
二叉树基本概念与遍历
1. 二叉树概念 一棵二叉树是结点的一个有限集合。该集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树组成。 满二叉树 在一棵二叉树中,如果所有分支结点都存在左子树和右子树, 并且所有叶子节点都在同一层上。 完全二叉树 如果一棵具有N个结点的二叉树的结构与满二叉树的前N个结点的结构相同,称为完全二叉树。 2. 二叉树的特点每个结点最多...原创 2018-04-29 08:19:46 · 5086 阅读 · 0 评论