【数据结构】C语言版
文章平均质量分 80
Qregi
刚入行的初级程序员
展开
-
【数据结构】实现一个队列(链式)
代码如下:Queue.h#pragma once#includetypedef char QueueType;/*创建一个结点的结构体*/typedef struct Node{ QueueType data; struct node* _next;}Node;/*队列结构体,有头尾指针*/typedef struct Queue{ struct Node原创 2018-01-28 17:48:10 · 355 阅读 · 0 评论 -
【数据结构】二叉树的基本操作
二叉树的基本操作BinTree.h #pragma once #include #include #include typedef char BinTreeType; typedef struct BinTreeNode { BinTreeType data; struct BinTreeNode* lchild; struct BinTreeNode* rch原创 2018-02-27 15:50:17 · 505 阅读 · 0 评论 -
【数据结构】数据结构之排序算法
所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法可以分为稳定排序和不稳定排序比如对一个数组,如果A[i] = A[j],A[i]原来在位置前,排序后A[i]还是要在A[j]位置前,这样的排序叫稳定排序。下面是几种常见的排序算法:一、插入类排原创 2018-03-07 15:29:08 · 770 阅读 · 0 评论 -
【数据结构】线索化二叉树(前序中序后序)
ThreadTree.h#pragma once#includetypedef enum Flag{ Is_Chlid, Is_Thread,}Flag;typedef char ThreadType;typedef struct ThreadNode{ ThreadType data; struct ThreadNode* left; struct Th原创 2018-02-27 19:49:23 · 475 阅读 · 0 评论 -
【数据结构】一些海量数据处理问题
1. 给定一个大小超过 100G 的文件, 其中存在 IP 地址, 找到其中出现次数最多的 IP 地址(hash文件切分)把这个100个G的文件分成1000份左右的文件,然后把这个100个G里面相同的IP地址, 使用相同的散列函数将所有IP地址转换为一个整数key,再利用 index=key%1000就可将相同IP分到同一个文件2. 给定10原创 2018-03-07 21:53:35 · 409 阅读 · 0 评论 -
【数据结构】堆的基本操作和堆排序
堆的基本操作,以及用堆排序对一个数组进行排序原创 2018-02-28 18:17:40 · 401 阅读 · 0 评论 -
【数据结构】二叉搜索树的基本操作(第二遍)
总结一下二叉搜索树的删除二叉搜索树的删除分为以下几种情况:1.要删除的结点是叶节点a.要删除的结点是根节点b.要删除的结点非根节点2.要删除的结点左子树为空a.要删除的结点是根节点b.要删除的结点非根节点3.要删除的结点右子树为空a.要删除的结点是根节点b.要删除的结点非根节点4.要删除的结点左右子树都不为空a.要删除的结点是根节点b原创 2018-03-02 14:26:53 · 230 阅读 · 0 评论 -
【数据结构】哈希表的基本操作
这个哈希表如果出现哈希冲突,用的是开散列的方法,继续往后面插入这些代码主要实现的功能有:创建哈希表,然后实现哈希表的插入删除和查找,是一个通用的哈希表插入时,如果当前位置的statu为valid,表示该位置已经有元素了,就不能插入了否则,无论是invalid还是empty表示都可以插入,invalid表示该位置元素被删除了删除一个原创 2018-03-02 17:38:31 · 2827 阅读 · 0 评论 -
【数据结构】简单哈希表的实现(开散列)
数据结构之哈希表的实现(开散列)开散列的方法是,在哈希表中,存储一个单链表,如果出现哈希冲突,就往单链表插入数组中每个位置存储一个单链表,我这里数组元素是指针,是不带头结点的单链表哈希表结构体的代码如下:#define HASHMAXSIZE 1000typedef int HashType;typedef int ValueType;type原创 2018-03-03 18:37:44 · 727 阅读 · 0 评论 -
【数据结构】数据结构之位图
数据结构之位图位图是个很简单的东西,它通过利用一个bit位来表示一些数据状态简单的情况,比如一万个人的性别,或者表示某些东西是否存在,在某些情况可以节省大量的空间。这是位图的结构体代码,capacity表示要存储的数据:#pragma once#include#includetypedef struct BitMap{ uint64_t* dat原创 2018-03-04 19:43:07 · 495 阅读 · 0 评论 -
【数据结构】布隆过滤器的简单实现
布隆过滤器的简单实现布隆过滤器(Bloom Filter)的适用范围如下:实现数据字典,数据的判重,或者集合求交集基本原理如下:它的内容是,一个位图加上k个独立的hash函数,通过k个hash函数,可以得到khash函数对应的值,然后把这些hash函数对应的值存入位图中(把具体的某一位置为1),然后查找时,通过判断k个hash原创 2018-03-05 11:41:50 · 1540 阅读 · 0 评论 -
【数据结构】前缀后缀表达式求值
前缀表达式和后缀表达式是什么呢?对于任何算数表达式来说,如果每个操作符跟在它的两个操作数之后,而不是两个操作数之间,那么这个表达式就是后缀表达,又称为逆波兰表达式,如:3 5 + 7 * 1 -如果是跟在两个操作数之间,那么这个表达式就是中缀表达式,如:(3 + 5) * 7 - 1 如果是在两个操作数之前,那么这个表达式就是前缀表达式,又称波兰表达式,如:-*+3 5 7 1前缀表达式求值,思路原创 2018-03-13 21:18:18 · 7988 阅读 · 0 评论 -
【数据结构】二叉搜索树的插入删除查找
BST.h#pragma once#includetypedef char BTreeType;/*创建一个二叉搜索树的结构*/typedef struct BTreeNode{ BTreeType data; struct BTreeNode* left; struct BTreeNode* right;}BTreeNode;/*初始化一个二叉搜索树*/void原创 2018-02-05 11:51:37 · 324 阅读 · 0 评论 -
【数据结构】两个队列实现一个栈
代码如下:QStcak.h#pragma once#includetypedef char QueueType;/*创建一个结点的结构体*/typedef struct Node{ QueueType data; struct node* _next;}Node;/*队列结构体,有头尾指针*/typedef struct Queue{ struct Node*原创 2018-01-28 17:52:25 · 328 阅读 · 0 评论 -
【数据结构】求多出口带环迷宫的最短路径(递归版本)
Maze.h#pragma once#includetypedef struct Pos{ int _Row; int _COL;}Pos;typedef struct Maze{ struct Pos pos;}Maze;Maze.c#define _CRT_SECURE_NO_WARNINGS 1#include#include"Maze.原创 2018-02-03 22:17:49 · 434 阅读 · 0 评论 -
【数据结构】用两个栈实现一个队列(链式)
queue.h#pragma once#includetypedef char StackType;/*创建一个结点储存数据*/typedef struct Node{ StackType data; struct Node* next;}Node;typedef struct Stack{ struct Node* top; struct Node* botto原创 2018-01-30 17:55:55 · 303 阅读 · 0 评论 -
【数据结构】给出入栈序列判断出栈序列的合法性
给定一个出栈序列,判断该序列是否合法方法如下:1.设置一个辅助栈来存储压入栈而尚未出栈的元素2.假设压栈序列 {a,b, c, d, e };3.给定一个出栈序列{c,a, ,b d, e,};4.判断如下通过cur遍历压栈序列,通过str遍历出栈序列cur指a,str指c判断cur和str的内容是否相等如果不相等:就把cur所指的内容压入辅助栈辅助栈:a】原创 2018-01-30 20:55:17 · 2700 阅读 · 0 评论 -
【数据结构】C语言实现共享栈
共享栈是两个栈在一个顺序的存储空间中。两个栈的栈底分别是存储空间的首尾地址。代码如下:stack.h#pragma once#include#define STACKMAXSIZE 1000typedef char StackType;/*定义一个共享栈的结构*/typedef struct { StackType data[STACKMAXSIZE]; /*原创 2018-01-31 16:56:15 · 1275 阅读 · 0 评论 -
【数据结构】C语言单链表面试题
// 链表相关面试题 // //1. 比较顺序表和链表的优缺点,说说它们分别在什么场景下使用? //2. 从尾到头打印单链表 //3. 删除一个无头单链表的非尾节点 //4. 在无头单链表的一个非头节点前插入一个节点 //5. 单链表实现约瑟夫环 //6. 逆置/反转单链表 //7. 单链表排序(冒泡排序&快速排序) //8. 合并两个有序链表原创 2018-01-24 19:07:36 · 358 阅读 · 0 评论 -
【数据结构】C语言实现顺序栈和链式栈
顺序栈SeqStack.h#pragma once#includetypedef char SeqType;#define SEQMAXSIZE 1000typedef struct SeqStack{ SeqType data[SEQMAXSIZE]; int top; int bottom;}SeqStack;//初始化栈void Se原创 2018-01-20 21:23:17 · 678 阅读 · 0 评论 -
【数据结构】C语言实现双向链表(带头尾指针,非循环链表)
DLinkList.h#pragma once#include#includetypedef char DLinkType;//C语言双向链表typedef struct DLinkNode{ DLinkType data; struct DLinkNode* _next; struct DLinkNode* _prev;}DLinkNode;type原创 2018-01-19 20:02:46 · 1663 阅读 · 1 评论 -
【数据结构】C语言实现双向链表(双向循环链表,无尾指针)
DLinklist.h#pragma once #include#includetypedef char DLinkType;//双向链表typedef struct DLinkNode { DLinkType data; struct DLinkNode* _next; struct DLinkNode* _prev;}DLinkNode;////typ原创 2018-01-17 22:18:37 · 646 阅读 · 0 评论 -
【数据结构】C语言单链表的后续操作
LinkList.h#pragma once#include#includetypedef char LinkType;typedef struct LinkNode{ LinkType data; struct LinkNode* next;}LinkNode;//初始化void LinkListInit(LinkNode** head);//创建一个新结点Li原创 2018-01-15 18:43:11 · 407 阅读 · 0 评论 -
【数据结构】顺序表的实现
seq_list.h#pragma once#include#include#define LIST_SIZE_INIT 3#define default_value 1000typedef char SeqType;typedef struct Seqlist{ SeqType* data; size_t size; size_t capacity;}Seqlist;原创 2017-12-10 23:13:09 · 275 阅读 · 0 评论 -
【数据结构】求简单迷宫是否存在路径(递归和非递归版)
求简单迷宫是否存在路径代码中用到的栈代码如下:stack.h#pragma once#include#include#include"Maze.h"typedef Pos SeqType;#define SEQDATAMAX 1000/*创建一个栈的结构体*/typedef struct SeqStack{ SeqType data[SEQDATAM原创 2018-02-01 17:58:50 · 1117 阅读 · 0 评论 -
【数据结构】求多出口迷宫的最短路径
代码如下:Maze.h#pragma once#includetypedef struct Pos{ int _Row; int _COL;}Pos;Maze.c#define _CRT_SECURE_NO_WARNINGS 1#include"Maze.h"#include"Stack.h"/*判断当前路径是否在地图上*/int CanStay(原创 2018-02-01 18:02:46 · 985 阅读 · 0 评论 -
【数据结构】求多出口带环迷宫的最短路径
代码如下:Maze.h#pragma once#includetypedef struct Pos{ int _Row; int _COL;}Pos;typedef struct Maze{ struct Pos pos;}Maze;Maze.c#define _CRT_SECURE_NO_WARNINGS 1#include#includ原创 2018-02-01 21:03:40 · 246 阅读 · 0 评论 -
【数据结构】求多出口迷宫的最短路径(递归版本)
Maze.h#pragma once#includetypedef struct Pos{ int _Row; int _COL;}Pos;typedef struct Maze{ struct Pos pos;}Maze;Maze.c#define _CRT_SECURE_NO_WARNINGS 1#include#include"Maze.原创 2018-02-03 12:40:57 · 1622 阅读 · 0 评论 -
【数据结构】C语言实现无头节点单链表
LinkList.h#pragma once#include#includetypedef char LinkType;typedef struct LinkNode{ LinkType data; struct LinkNode* next;}LinkNode;//初始化void LinkListInit(LinkNode** head);//创建一个新结点Li原创 2018-01-13 22:43:44 · 877 阅读 · 0 评论 -
【数据结构】最小栈的两种实现方法
一切都在注释里~SeqStcak.h#pragma once#include#includetypedef char SeqType;#define SEQDATAMAX 1000/*创建一个栈的结构体*/typedef struct SeqStack{ SeqType data[SEQDATAMAX]; struct SeqStack* top; str原创 2018-01-27 17:51:11 · 392 阅读 · 1 评论 -
【数据结构】树的总结
我们在日常生活中经常遇到树——这是一个很熟悉的基本概念,例如族谱,就是一个家族树,可以追踪祖先和后代的信息,还有把英语句子转换为组成部分的词法分析树有许多种树,而且理解树的抽象表示与用它来表示应用的具体表示之间的区别是极其重要的。所以,我这里根据树的概念来一步一步的讨论在数据结构中不同的树树的概念1.树在数据结构中,一棵树就是满足某种要求的节点的一个非空集合。一个顶点就是一个简单对象,可以保存相关...原创 2018-03-26 13:59:58 · 2683 阅读 · 0 评论