
数据结构
文章平均质量分 57
神化我
活到老,码到老
展开
-
顺序表(静态)
直接上代码:text.c#define _CRT_SECURE_NO_DEPRECATE 1#include "SeqList.h"#include "stdio.h"SeqList seq;//增void TestPushSeqList(){ //尾插 InitSeqList(&seq); PushBack(&seq, 1); PushBack...原创 2018-09-11 20:21:29 · 127 阅读 · 0 评论 -
搜索结构之哈希
哈希概念 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。例如:给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数...原创 2018-10-27 19:11:53 · 133 阅读 · 0 评论 -
搜索结构之二叉搜索树
二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。 定义 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值 若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值 左、右子树也分别为二叉排序树 查找 若根结点的...原创 2018-10-27 18:29:17 · 175 阅读 · 0 评论 -
二叉堆
概念 二叉堆是一种特殊的堆,二叉堆是完全二元树或者是近似完全二元树。二叉堆有两种:最大堆和最小堆。最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等于任何一个子节点的键值。作用:增加存储效率 一个数插入到10000个数的数组中,在顺序排列结构的数组里,挨个比较的方法来确定新插入数的位置,最坏的情况得比...原创 2018-10-22 14:56:27 · 220 阅读 · 0 评论 -
二叉树的相关代码
创建二叉树的结构体:首先创建叶子节点结构体,然后创建树的结构体。typedef struct BNode { TDataType data; struct BNode* left; struct BNode* right;}BNode;typedef struct { BNode* root; int used;} RESULT;其中used是已经被使用过的...原创 2018-10-15 18:22:36 · 234 阅读 · 0 评论 -
贪吃蛇
直接上代码:Model.h#pragma once//坐标的结构体typedef struct Coordinate { int x; int y;} Coordinate;//链表的节点结构体typedef struct Node{ Coordinate Coord; struct Node* next;} Node;//蛇前进的方向typedef...原创 2018-09-29 20:29:54 · 146 阅读 · 0 评论 -
栈和队列的面试题
栈#pragma once#include <assert.h>#include <stdio.h>typedef int SDataType;#define MAX_SIZE (100)typedef struct Stack{ SDataType array[MAX_SIZE]; int top; // 起了个别名,含义还是 size}...原创 2018-09-28 17:02:09 · 173 阅读 · 0 评论 -
数据结构-栈和栈的应用
栈的定义 栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。 栈分顺序栈和链式栈,不过通常使用的是顺序栈。下面介绍顺序栈。...原创 2018-09-22 21:05:30 · 363 阅读 · 0 评论 -
C语言实现俄罗斯方块
看下游戏界面:不知道怎么介绍,直接上代码:Model.h#pragma once#define FACE_X 20#define FACE_Y 29#define WALL 2#define BOX 1#define KONG 0typedef struct Face{ int data[FACE_Y][FACE_X + 10]; //1-&g...原创 2018-10-11 17:47:31 · 2577 阅读 · 1 评论 -
带头节点且循环的双链表
由于很简单,直接上代码DList.h#pragma once#include "stdio.h"#include "assert.h"#include "stdlib.h"typedef int Datatype;typedef struct DNode { Datatype data; struct DNode* next; struct DNode* prev;...原创 2018-09-20 16:55:33 · 238 阅读 · 0 评论 -
链表(C语言)
链表是由节点组成的,我们只要创建一个个节点就可以表示链表。用一个结构体表示一个节点: struct Node{ int data; struct Node* next;}Node;链表的代码如下:LinList.h#pragma once#include "stdio.h"#include "assert.h"#include "stdlib.h"typ...原创 2018-09-14 20:14:24 · 144 阅读 · 0 评论 -
链表面试题
链表的结构 typedef struct Node{ DataType data; struct Node* next;}Node, *pNode; 链表的基本函数 //初始化void InitLinList(pNode* pn){ assert(pn); *pn = NULL;}//创建新的节点Node* CreatNewNode(DataType ...原创 2018-09-19 21:42:50 · 299 阅读 · 0 评论 -
顺序表(动态)
代码:SeqListD.h#pragma once#include "stdio.h"#include "stdlib.h"#include "assert.h"typedef int DataType;typedef struct SeqListD{ DataType* data; int sz; int capicity;}SeqListD,*pSeqLi...原创 2018-09-12 17:45:44 · 167 阅读 · 0 评论 -
排序
我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。排序算法大体可分为两种:算法的复杂度和稳定性:排序算法的稳定性:排序算法稳定性的简单形式化定义为:如果Ai = Aj,排序前Ai在Aj之前,排序后Ai还在Aj之前,则称这种排序算法是稳定的。通俗地讲就是保证排序前后两个相等的数的相对顺序不变冒泡排序冒泡排序是一种极其简单的排序算法,也是我所学的...原创 2018-10-27 20:39:35 · 177 阅读 · 0 评论