![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
C__zhang
这个作者很懒,什么都没留下…
展开
-
堆的基本操作
模块代码 【1.创建堆结构体】存放堆的数组堆的容量堆的长度typedef int HPDataType;//接受两个指针类型的参数,返回整形的函数指针typedef int(*PCompare)(HPDataType left, HPDataType right);typedef struct Heap{ HPDataType *_array; int...原创 2018-08-30 23:57:08 · 191 阅读 · 0 评论 -
哈希算法(闭散列)
模块代码函数 【1.定义一个哈希算法结构体】#define MAX_SIZE 10typedef int DataType;typedef enum{EXIST, EMPTY, DELETE}State;typedef struct HTElem{ DataType _data; State _state;}HTElem;typedef struct ...原创 2018-09-03 14:26:45 · 357 阅读 · 0 评论 -
哈希算法的优化(闭散列)
完整代码块/***************************************///Hash_OP.h#define MAX_SIZE 10//typedef int DataType;typedef char *DataType;typedef int(*PDTInt)(DataType data);//转int类型typedef enum{ EXIST, E...原创 2018-10-02 20:16:52 · 701 阅读 · 0 评论 -
哈希桶(开散列)
完整代码块/***************************************///HashBucket.h#pragma oncetypedef int HBDataType;typedef struct HashBucketNode{struct HashBucketNode *_pNext;HBDataType _data;}Node, *PNode;//将d...原创 2018-10-02 20:53:06 · 279 阅读 · 0 评论 -
插入法排序
实现代码#include <stdio.h>//打印函数void PrintArray(int *array, int size){ int i = 0; for (; i < size; i++) { pri原创 2018-10-03 23:15:00 · 6096 阅读 · 0 评论 -
希尔排序
实现代码块//希尔排序void ShellSort(int *array, int size){ //int gap = 3; //int gap = gap / 3 + 1;这个方式较优 int gap = size; while (gap > 1) { int i = 0; gap = gap / 3 + 1; for (i = gap; i &am原创 2018-10-05 16:04:59 · 238 阅读 · 0 评论 -
选择法排序
实现代码//选择法排序void SelectSort(int *array, int size){ int i; for (i = 0; i < size - 1; ++i) { int j = 1; int maxPos = 0; for (; j < size - i; ++j) { if (array[j] > array[maxPos])...原创 2018-10-05 19:55:46 · 1832 阅读 · 0 评论 -
堆排序
堆排序//堆排序void HeapSort(int *array, int size){ //1.建堆--升序--大堆 int end = size - 1; int root = ((size - 2) >> 1); for (; root >= 0; --root) HeapAdjust(array, size, root); //2.排序---删除...原创 2018-10-08 17:03:06 · 189 阅读 · 0 评论 -
冒泡排序
冒泡排序//冒泡排序void BubbleSort(int *array, int size){ int i, j; for (i = 0; i < size; i++) { int isChange = 0; for (j = 0; j < size - i - 1; ++j) { if (array[j] > array[j + 1]) {...原创 2018-10-08 17:07:34 · 203 阅读 · 0 评论 -
快速排序
快速排序(1)在待排序的序列中找一个基准值—[left, right)— 区间中最后一个元素(2)方法:按基准值将序列分割成左右两部分(3)排基准值的左边(4)排基准值的右边//三数取中法(通过这种方法降低取到极值的概率)int GetMiddleIndex(int *array, int left, int right){ int mid = left + ((right -...原创 2018-10-08 17:13:13 · 254 阅读 · 0 评论 -
归并排序
归并排序#include <string.h>#include <assert.h>#include <malloc.h>void MergeData(int *array, int left, int middle, int right, int *temp){ in原创 2018-10-08 17:16:44 · 209 阅读 · 0 评论 -
位图的实现
完整代码块/************************************************///BitMap.h#pragmatypedef struct BitMap{ int* _pBit;//bit位的集合 int _capacity;//bit位总的个数j int _size;//有效:bit位为1的个数}BitMap;//初始化void...原创 2018-10-18 14:37:16 · 223 阅读 · 0 评论 -
堆排序(升序)
堆排序操作//堆排序向下调整void HeapAdjustDown(int *arr, int size, int parent){ int child = parent * 2 + 1; assert(arr); //while (child < size) //{ // if (child + 1 < size &&...原创 2018-09-02 12:01:08 · 1113 阅读 · 0 评论 -
优先级队列(堆)
模块函数 【1.定义一个优先级队列结构体】结构体中放一个堆类型的元素typedef struct PriorityQueue{ Heap _hp;}PriorityQueue;【2.初始化优先级队列】调用堆初始化函数进行操作void InitPriorityQueue(PriorityQueue* q){ InitHeap(&q-...原创 2018-09-02 11:49:11 · 343 阅读 · 0 评论 -
顺序存储(顺序表)
1.顺序存储方式 线性表的顺序存储结构,就是在内存中找到一块空间,通过占位的方式,把一定内存空间给占了,然后把相同数据类型的数据元素依次存放在这块空间中,既然线性表的每个数据元素的类型相同,所以C语言(其他语言也相同)用一维数组来实现顺序存储结构,即把第一个数据元素存到数组下标为0的位置中,接着把线性表相邻的元素存储在数组中相邻的位置。2.顺序存储的属性 三个属性:存储空间的起始...原创 2018-08-25 11:56:23 · 23051 阅读 · 0 评论 -
二叉搜索树的基本操作
完整代码块/*************************************************///BSTree.htypedef int SDataType;typedef struct BSTNode{ struct BSTNode *_pLeft; struct BSTNode *_pRight; SDataType _data;...原创 2018-08-31 00:02:27 · 263 阅读 · 0 评论 -
链式存储(无头单向不循环链表)
1.链表的分类(8种)单向 | 双向有头 | 没有头有循环 | 无循环2.顺序表 和 链表优缺点顺序表 随机下标访问链表 便于增删(不是尾巴)3.概念一个个空间空间中承载的数据空间之间用链式结构串起来(next)next==NULL 表示结尾4.链表 增删(改)查Push Back | Front | PosPop Back | Front ...原创 2018-08-28 21:32:37 · 511 阅读 · 0 评论 -
队列基本操作
/*****************************************///LQueue.h#pragma oncetypedef int QElemType;//typedef struct BTNode* QElemType;typedef struct QNode{ QElemType data; struct QNode *_pNext;}...原创 2018-08-28 21:59:36 · 98785 阅读 · 14 评论 -
时间复杂度_空间复杂度
衡量一个算法的好坏: 时间复杂度 & 空间复杂度时间复杂度—>基本语句关于问题规模n的数学表达式【f(n) = 常数*n^2 + 常数*n + 常数】空间复杂度—>创建变量个数关于问题规模n的数学表达式常用o渐进表示法表示时间复杂度与空间复杂度: o渐进表示法时间复杂度求解方式:1.求解数学表达式2.数学表达式有多各项,只保留最高阶项(增长原创 2018-08-23 16:48:27 · 269 阅读 · 0 评论 -
简单迷宫
/************************************///Stack.h#define MAXSIZE 10//typedef int SDataType;//typedef char SDataType;/////////////////////////////迷宫定义的结构体与栈的数据类型不同typedef struct Position{ ...原创 2018-08-29 16:57:58 · 313 阅读 · 0 评论 -
链表面试题
//1.从头到尾打印单链表//递归法void ReversePrintDG(SList *pFirst){ if (pFirst == NULL){ printf("NULL <-"); return; } ReversePrintDG(pFirst-&a原创 2018-08-28 21:51:23 · 269 阅读 · 0 评论 -
带环迷宫
#pragma once/************************************///Stack.h#define MAXSIZE 10//typedef int SDataType;//typedef char SDataType;/////////////////////////////迷宫定义的结构体与栈的数据类型不同typedef struct ...原创 2018-08-29 17:09:23 · 187 阅读 · 0 评论 -
括号匹配_逆波兰函数(栈)
//1.括号匹配/*取一个字符:1.检测该字符是否为括号:是括号,继续1,否则返回2.如果是左括号-->入栈3.如果是右括号,检测该括号是否与栈顶括号匹配是:将栈顶元素出栈否:括号的匹配次序出错栈是否为空:空:正确非空:左比右括号多*/int IsBrackets(char ch)//判断括号函数{ if (('(' == ch) || (')' == ...原创 2018-08-28 21:56:56 · 462 阅读 · 0 评论 -
栈的基本操作
/************************************///Stack.h#define MAXSIZE 10typedef int SDataType;typedef struct Stack{ SDataType _array[MAXSIZE]; int _top; //标记栈顶元素}Stack;//初始化void StackIn...原创 2018-08-28 21:54:11 · 482 阅读 · 0 评论 -
二叉树的基本操作及面试题
完整代码/************************************///BinTree.htypedef int BDataType;typedef struct BTNode{ struct BTNode *_pLeft; struct BTNode *_pRight; BDataType data;}BTNode;//创建二叉树...原创 2018-08-29 17:53:45 · 446 阅读 · 0 评论 -
布隆过滤器
实现完整代码/***************************************************///BloomFilter.h#include "BitMap.h"#include "Common.h"typedef int(*PSTRTINT)(const char*);typedef struct BloomFilter{ BitMap _bmp;...原创 2018-10-26 16:47:35 · 210 阅读 · 0 评论