数据结构
Victor.Chang
留下思索,分享感悟
展开
-
【数据结构】动态顺序表
SeqList.h#ifndef _SEQLISTH_H_#define _SEQLISTH_H_#include#include#includetypedef int Datatype; typedef struct SeqList { Datatype* _a; size_t _size; // 有效数据个数 size_t _capacity; // 容量原创 2017-12-13 16:07:38 · 1746 阅读 · 0 评论 -
C语言布隆过滤器BloomFilter
在实现BloomFilter,首先实现一个位图;BitMap在位图中,每个元素为“0”或“1”,表示其对应的元素不存在或者存在。typedef struct BitMap { size_t* _bits; size_t _range; }BitMap; void BitMapInit(BitMap* bm, size_t range) ;void BitMapSet(BitMap...原创 2018-03-02 14:46:21 · 2977 阅读 · 0 评论 -
海量数据处理问题
1.给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?将100G的log file分成1000份相同的Ip必定会在同一个小文件里在每个文件里找出出现次数最多的ip将找出来的1000个最多ip进行比较,找出最多的一个2.给定100亿个整数,设计算法找到只出现一次的整数 给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集 个文...原创 2018-03-02 16:27:11 · 1983 阅读 · 0 评论 -
栈,迷宫问题
#include"Stack.h"#define N 6 int maze[N][N] = { {0,0,0,0,0,0}, {0,0,1,1,1,0}, {0,0,1,0,1,0}, {0,0,1,1,1,0}, {0,0,1,0,1,1}, {0,0,1,0,0,0}, }; void MazePrint();int MazeCheckIsAccess(P...原创 2018-03-04 15:30:49 · 1742 阅读 · 0 评论 -
链表面试题(下)
// 链表带环问题; 是环,返回相遇点SListNode* SListIsCycle(SListNode* list){ SListNode* fast,*slow ; assert(list); fast = list->_next; slow = list->_next; while(fast&&fast->_next){ slow=slow-...原创 2018-02-25 14:38:06 · 1685 阅读 · 0 评论 -
二叉树的基础操作
BinTree.h#ifndef _BINTREE_H_#pragma once #include<stdio.h>#include<assert.h>#include<malloc.h>#include<windows.h>typedef int BTDataType; //typedef struct TreeNode //...原创 2018-02-25 17:25:10 · 1690 阅读 · 0 评论 -
Java-快速排序、归并排序、堆排序、基数排序实现总结
直接上代码,分析注释里import java.util.Arrays;public class Test{ public static void main(String[] agrs){ //int[] a = new int[]{6,5,7,1,3,9,8,4,2,0,10}; int[] a = new int[]{6,27,1,3,5,8,24,2,10,5,8,8,8,24}...原创 2018-03-25 11:11:36 · 1845 阅读 · 0 评论 -
Java-实现常见的七种排序
/** 插入排序:直接,希尔 选择排序:选择排序,堆排序 交换排序:冒泡,快速 归并排序:归并*/public class Sort{ public static void main(String[] agrs){ int[] a = new int[] {5,6,8,7,4,9,3,1,2,0}; //int[] a = new int[] {9,8,7,6,5,4,3...原创 2018-03-21 15:33:30 · 1737 阅读 · 0 评论 -
Java-实现二叉树基本操作、面试题
我们先来介绍一下什么是二叉树:二叉树的概念:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的二叉树组成二叉树的特点:每个结点最多有两棵子树,即二叉树不存在度大于2的结点二叉树的子树有左右之分,其子树的次序不能颠倒满二叉树:在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子节点都在同一层上完全二叉树:如果一棵具有N个结点的二叉树的结构...原创 2018-03-27 23:39:02 · 11994 阅读 · 5 评论 -
Java-二叉搜索树的实现操作及应用
二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树插入在二叉搜索树中插入新元素时,必须先检测该元素是否在树中已经存在。如果已经存在,则不进行插入;否则将新元素加入到搜索停止的地方。删除首先查找元素是否在二叉搜索树中,如果不存在,则返回...原创 2018-03-28 22:54:05 · 1966 阅读 · 0 评论 -
Java-双向链表的实现
双向链表,每个节点有一个属性值,一个指向前一个节点prev,一个指向后一个节点next,Link接口:public interface Link { boolean add(Object obj); //添加 boolean remove(Object obj); //删除 int length(); //求长度 Object[] toArray(); //转换为数组 bool...原创 2018-04-13 22:35:37 · 2175 阅读 · 0 评论 -
C语言常见的排序
#include<stdio.h>#include<windows.h>#include<assert.h>#include"Stack.h"typedef int DataType;void SortPrint(DataType*a,size_t n){ size_t i; for(i=0;i<n;i++) printf("%d ...原创 2018-03-15 20:44:18 · 1737 阅读 · 0 评论 -
哈希变形---位图
1.给定100亿个整数,设计算法找到只出现一次的整数 2.给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集 3.1个文件有100亿个int,1G内存,设计算法找到出现次数不超过2次的所有整数 typedef struct BitMap { size_t* _bits; size_t _range; }BitMap; void BitMapInit(Bi...原创 2018-03-01 17:20:17 · 1936 阅读 · 0 评论 -
C实现Hash表,链式结构
typedef int KeyType; typedef int ValueType; typedef struct HashNode { KeyType _key; ValueType _value; struct HashNode* _next;}HashNode; typedef struct HashTable { HashNode** _tables; s...原创 2018-02-28 21:07:48 · 2232 阅读 · 0 评论 -
C语言单链表的实现
SListNode.h#ifndef _SLISTNODE_H_#define _SLISTNODE_H_#include#include#include#include#includetypedef int DataType;typedef struct SListNode { struct SListNode* _next; DataType _data;原创 2018-01-01 17:00:48 · 1762 阅读 · 0 评论 -
C语言栈和队列的实现
Stack.h#ifndef _STACK_H_#define _STACK_H_#include#include#include#include#includetypedef int DataType;typedef struct Stack{ DataType *_arr; size_t top; size_t end;}Stack;void StackIn原创 2018-01-03 14:18:25 · 2042 阅读 · 0 评论 -
C语言链表实现贪吃蛇小游戏
Snake.h#ifndef _SNAKE_H_#include#include#include#include#include#define _SNAKE_H_#define FOOD "■"#define INIT_X 24#define INIT_Y 5//蛇的节点typedef struct node{ int _x; int _y; struct no原创 2018-01-09 17:27:28 · 3193 阅读 · 0 评论 -
C++ 链表实现学生成绩表系统(文件存储)
#include#include #include #include"stdlib.h"using namespace std;class Node{ public: int num; char name[20]; float Math; float English; float Physics; float average; Node *next;};原创 2018-01-01 17:23:54 · 6370 阅读 · 3 评论 -
链表面试题(上)
SListNode.h#ifndef _SLISTNODE_H_#define _SLISTNODE_H_#include<stdio.h>#include<assert.h>#include<string.h>#include<malloc.h>#include<windows.h>typedef int D...原创 2018-01-29 14:42:56 · 1691 阅读 · 0 评论 -
堆与最优级队列
heap.h#include<stdio.h>#include<time.h>#include<stdlib.h>#include<windows.h>typedef int DataType; void AdjustDown(DataType* a, size_t n, int root){ int child; while(ro...原创 2018-02-26 16:14:25 · 1706 阅读 · 0 评论 -
搜索结构搜索二叉树
#include<stdio.h>#include<malloc.h>#include<windows.h>#include<assert.h>typedef int DataType;typedef struct BSTreeNode{ struct BSTreeNode* _left; struct BSTreeNode* _r...原创 2018-02-27 09:19:43 · 1679 阅读 · 0 评论 -
二叉树的线索化
#include<stdio.h>#include<assert.h>#include<stdlib.h>typedef int DataType; typedef enum PtrTag{ THREAD, // 线索化 LINK, // 链接左右孩纸 }PtrTag; typedef struct BinaryTreeNodeThd ...原创 2018-02-27 17:39:51 · 1685 阅读 · 0 评论 -
搜索二叉树的应用
1. 判断一个单词是否拼写正确 2. 请模拟实现一个简单的中英互译的字典 3. log文件中有许多异常重复的IP地址,请统计出每个异常IP出现了多少次? 利用上篇搜索二叉树的结构稍作修改typedef char* KeyType; typedef char* ValueType; typedef struct BSTreeNode { struct BSTreeNode* _left...原创 2018-02-28 15:08:20 · 2271 阅读 · 0 评论 -
C实现Hash表,开放定址法
typedef int KeyType; typedef int ValueType; //用枚举来表示当前节点的状态typedef enum Status { EMPTY, //空 EXITS, //存在 DELET, //删除}Status; typedef struct HashNode { KeyType _key; ValueType _value; ...原创 2018-02-28 17:44:55 · 2192 阅读 · 0 评论 -
Java-双链表(泛型)
使用泛型实现之前用Object的双链表:点击打开链接interface Link<T>public interface Link<T> { boolean add(T obj); //添加 boolean remove(T obj); //删除 int length(); //求长度 Object[] toArray(); //转换为数组 boolean...原创 2018-04-26 19:46:05 · 2445 阅读 · 0 评论