- 博客(8)
- 收藏
- 关注
原创 数据结构:堆的基本操作 及 可以选择大小堆的优化堆
堆是可以理解为特殊的数据结构,每个结点都有一个值。是指二叉堆。 堆的特点是根节点的值最小(或最大),且根结点的两个子树也是一个堆 堆就是用数组实现的二叉树,所有它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置 堆分为大根堆,小根堆,大根堆就是树的根结点值最大,小根堆就是树的根结点值最小。 Heap.h #pragma once #include<...
2018-05-31 17:00:02 477
原创 二叉树及二叉树的基本操作(递归与非递归)
树是由一个或多个结点组成的有限集合,其中:⒈必有一个特定的称为根(ROOT)的结点;⒉剩下的结点被分成n>=0个互不相交的集合T1、T2、......Tn,而且, 这些集合的每一个又都是树。树T1、T2、......Tn被称作根的子树(Subtree)。树的递归定义如下:(1)至少有一个结点(称为根)(2)其它是互不相交的子树1.树的度——也即是宽度,简单地说,就是结点的分支数。以组成该树各...
2018-05-22 17:33:03 491
原创 数据结构:(两种方式)一个数组实现两个栈(共享栈)
奇偶栈!stack.h#pragma once #include<stdio.h> #include<assert.h> #include<stdlib.h> #define MAX_SIZE 10 typedef int DataType; typedef struct stack { DataType _arr[MAX_SIZE]; int _to...
2018-05-18 18:12:06 689
原创 1使用两个栈实现一个队列 2 使用两个队列实现一个栈 3 判断入栈顺序的合法性
使用两个栈实现一个队列:如图所示数据入栈,队列是队尾进数据,队头删数据,而在栈中,我们无法在对头删除数据,因此,需要把S1里的n-1个数据放到S2中,然后删除S1中的数据,在将S2中的数据放回到S1中。 stack.c#include"stack.h" void stackinit(stack *s) { assert(s); s->_size = 0; } void stackpus...
2018-05-16 17:54:05 270
原创 两种方式实现一个栈,要求实现Push(栈)、Pop(入栈)、Min(返回最小值)的时间复杂度为O(1)
实现一个栈,要求实现Push(栈)、Pop(入栈)、Min(返回最小值)的时间复杂度为O(1) 1: 如图,入栈时每次入栈两个元素。即入栈的数据与当前的最小值,将两个元素封装为一个结构体,返回时直接返回结构体中的最小值min,便可实现返回最小值的时间复杂度为O(1); stack.h #pragma once #include<stdio.h> #includ...
2018-05-15 00:27:32 316
原创 数据结构:队列的顺序表与链表的两种C语言实现
队列的基本概念 队列 (Queue) :是一种先进先出 (First In First Out ,简称 FIFO) 的线性表。只允许在表的一端进行插入,而在另一端进行删除。 队首 (front) :允许进行删除的一端称为队首。 队尾 (rear) :允许进行插入的一端称为队尾。 基本操作 void queue_init(queue *q);//初始化 void qu...
2018-05-12 21:57:39 733
原创 数据结构:递归实现简单迷宫
先标记进来的点2,入栈,递归形成子问题——如何走剩下的迷宫?从入口点向四周试探,如果任意一个方向走成功了,就return 1,也就是整个迷宫就有解了,如果这个方向走失败了,说明这个方向以后不论怎么走都失败,要出栈这个结点。当四个方向全失败了,出栈入口点,并返回0.栈结构实现:简单迷宫出口判断 - CSDN博客 点击打开链接数据结构:静态栈与动态栈的实现 - CSDN博客 点击打开链接Stac...
2018-05-07 23:51:24 953
原创 栈结构实现:迷宫出口判断
利用栈实现迷宫:首先判断入口是否合法。入栈,保存栈顶位置并判断是否为出口。走过的位置标记为2。如果不是出口,依次向上-左-右-下 的方向判断是否走得通,走不通可返回,返回时标记为3.若是四个方向都走不通,说明迷宫无出口!stack.h#pragma once #include <assert.h> #include <stdio.h> #include <stdlib...
2018-05-02 13:51:58 737
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人