
神兵利剑
文章平均质量分 71
Cardiac.TJ
克己勤免
展开
-
【数据结构】线性表基本知识
线性表n(n>=0)个数据元素组成的一个有限序列,可以在其任意位置上进行插入和删除操作的线性数据结构。从数据在物理内存存储形式上线性表可分为:顺序表和链表。线性表中数据与数据元素之间存在一对一的关系,即除第一个元素和最后一个元素外,每个元素都有唯一的直接前驱和唯一的直接后驱,第一个元素没有前驱,最后一个元素没有后继。顺序表用一段地址连续的存储单元依次存储数据元素的线性结构地址连续的...原创 2018-09-26 16:23:38 · 594 阅读 · 0 评论 -
【数据结构】哈希桶
处理整型头文件#ifndef _HASHTABLEBUCKET_H__#define _HASHTABLEBUCKET_H__#include<stdio.h>#include<stdlib.h>#include<assert.h>#include <string.h>stat原创 2018-10-08 14:52:20 · 283 阅读 · 0 评论 -
【数据结构】栈的实现
头文件#ifndef __STACK_H__#define __STACK_H__#include <stdio.h>#include <assert.h>#include <stdlib.h>#include <malloc.h>原创 2018-10-08 21:10:55 · 296 阅读 · 0 评论 -
【数据结构】队列的实现
头文件#ifndef __QUEUE_H__#define __QUEUE_H__#include<stdio.h>#include<malloc.h>#include<assert.h>#include<stdlib.h>typedef int DataType;typedef原创 2018-10-08 21:13:07 · 262 阅读 · 0 评论 -
【数据结构】利用栈解决多通路带环迷宫问题
头文件#ifndef __MAZE_H__#define __MAZE_H__#include "Stack.h"#define MAX_ROW 6#define MAX_COL 6typedef struct Maze{ int map[MAX_ROW][MAX_COL];}Maze;void InitMaze(Maze* m);void .原创 2018-10-09 12:43:59 · 333 阅读 · 0 评论 -
【数据结构】两个栈形成一个队列
栈和队列的相关函数栈:https://blog.youkuaiyun.com/weixin_41892460/article/details/82973851队列:https://blog.youkuaiyun.com/weixin_41892460/article/details/82973881头文件#ifndef __QUEUEBYTS_H__#define __QUEUEBYTS_H__#inclu...原创 2018-10-10 15:21:30 · 215 阅读 · 0 评论 -
【数据结构】共享栈
利用一个数组形成两个栈头文件#ifndef __SHAREDSTACK_H__#define __SHAREDSTACK_H__#include<string.h>#include<stdio.h>#include<Windows.h>#include<assert.h>#include&a原创 2018-10-26 12:04:06 · 250 阅读 · 1 评论 -
【数据结构】复杂链表的复制
单链表的实现:https://blog.youkuaiyun.com/weixin_41892460/article/details/82855823文章目录1.什么是复杂链表?一个链表的每个节点,有一个指向next指针指向下一个节点, 还有一个random指针指向这个链表中的一个随机节点或者NULL。typedef struct ComplexNode{ DataType _data; str...原创 2018-11-05 15:39:00 · 145 阅读 · 0 评论 -
【数据结构】实现一个栈要求实现Push(出栈)Pop(入栈)Min(返回最小值)的时间 复杂度为O(1)
文章目录MinStack.hMinStack.cTest.c栈的基本实现:https://blog.youkuaiyun.com/weixin_41892460/article/details/82973851MinStack.h#ifndef __MINSTACK_H__#define __MINSTACK_H__#include <stdio.h>#include &lt...原创 2018-11-05 15:53:23 · 645 阅读 · 1 评论 -
【数据结构】双向链表的实现
文章目录LinkList.hLinkLish.cLinkList.h#ifndef __LINKLIST_H__#define __LINKLIST_H__#include <stdio.h>#include <stdlib.h>#include <assert.h>typedef int DataType;typedef struct L...原创 2018-11-05 16:01:35 · 184 阅读 · 0 评论 -
【数据结构】二叉树基本操作
文章目录BinaryTree.hBinaryTree.cTest.c栈和队列的相关函数:栈:https://blog.youkuaiyun.com/weixin_41892460/article/details/82973851队列:https://blog.youkuaiyun.com/weixin_41892460/article/details/82973881BinaryTree.h#ifndef __...原创 2018-11-05 16:22:41 · 381 阅读 · 0 评论 -
【数据结构】堆的实现
文章目录Heap.hHeap.cTest.cHeap.h#ifndef __HEAP_H__#define __HEAP_H__#include&lt;assert.h&gt;#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;malloc.h&gt;typedef i原创 2018-11-05 16:25:10 · 140 阅读 · 0 评论 -
【数据结构】搜索二叉树的key-value模型
文章目录1. 采用key-value模型判断一个单词是否拼写正确,并且显示翻译BSVTree.hBSVTree.c2. 采用key-value模型才能求出文章中所有单词重复出现的次数呢?BSVTree.hBSVTree.c1. 采用key-value模型判断一个单词是否拼写正确,并且显示翻译BSVTree.h#pragma once#include &lt;stdio.h&gt;#in...原创 2018-11-05 16:42:31 · 1655 阅读 · 0 评论 -
【数据结构】位图与布隆处理器
文章目录1.位图的实现BitMap.hBitMap.c2.布隆的实现BloomFilter.hBloomFilter.c1.位图的实现BitMap.h#ifndef __BITSET_H__#define __BITSET_H__#include<stdio.h>#include<stdlib.h>#include<assert.h>#in...原创 2018-11-05 16:54:07 · 181 阅读 · 0 评论 -
【数据结构】搜索二叉树的实现
BinarySortTree.h#ifndef __BINARYSTREE_H__#define __BINARYSTREE_H__#include <stdio.h>#include <malloc.h>#include <assert.h>#include <stdlib.h>typedef int BSDataType;...原创 2018-11-23 11:01:00 · 223 阅读 · 0 评论 -
【数据结构】哈希表
处理整型头文件#ifndef __HASHTABLE_H__#define __HASHTABLE_H__#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;assert.h&gt;#include &lt;string.h&gt;static size_t Get原创 2018-10-08 14:46:32 · 196 阅读 · 0 评论 -
【数据结构】逆置/反转单链表
三指针法void ReverseList(pList* pplist){ pNode cur = NULL; pNode prev = NULL; pNode tmp = NULL; assert(pplist); if (*pplist == NULL || (*pplist)-&gt;next == NULL) { return; } prev = *pplist...原创 2018-10-07 22:15:08 · 286 阅读 · 0 评论 -
【数据结构】判断两个链表是否相交若相交求交点
假设链表不带环int CheckCross(pList list1, pList list2){ if (NULL == list1 || NULL == list2) return 0; //遍历到最后一个节点 while (list1-&gt;next) { list1 = list1-&gt;next; } while (list2-&gt;next) { l...原创 2018-10-07 22:12:30 · 203 阅读 · 0 评论 -
【数据结构】顺序表的静态实现
头文件#ifndef __SEQLIST_H__#define __SEQLIST_H__#include&amp;amp;lt;stdio.h&amp;amp;gt;#include&amp;amp;lt;assert.h&amp;amp;gt;#include&amp;amp;lt;stdlib.h&amp;amp;gt;#include&amp;amp原创 2018-09-26 16:41:24 · 287 阅读 · 0 评论 -
【数据结构】顺序表的动态实现
基本函数同静态顺序表https://mp.youkuaiyun.com/mdeditor/82855576#头文件#ifndef __SEQLISTD_H__#define __SEQLISTD_H__#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;assert.h&amp;gt;#include&amp;lt;stdlib.h&amp;g原创 2018-09-26 16:45:01 · 287 阅读 · 0 评论 -
【数据结构】单链表的实现
头文件#ifndef __LINKLIST_H__ #define __LINKLIST_H__ #include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;stdlib.h&amp;amp;gt;#include &amp;amp;lt;assert.h&amp;amp;gt;#include &amp;a原创 2018-09-26 16:52:29 · 534 阅读 · 0 评论 -
【数据结构】两个队列形成一个栈
栈和队列的相关函数栈:https://blog.youkuaiyun.com/weixin_41892460/article/details/82973851队列:https://blog.youkuaiyun.com/weixin_41892460/article/details/82973881头文件#ifndef __STACKBYTQ_H__#define __STACKBYTQ_H__#inclu...原创 2018-10-11 16:00:37 · 347 阅读 · 0 评论 -
【数据结构】元素入栈出栈的合法性判断
头文件#ifndef __CHECKSTACK_H__#define __CHECKSTACK_H__#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;stdlib.h&amp;gt;#include &amp;lt;assert.h&amp;gt;#include &amp;lt;malloc.h&am原创 2018-10-13 18:57:58 · 447 阅读 · 0 评论 -
【数据结构】单链表的基本操作
链表的实现:https://blog.youkuaiyun.com/weixin_41892460/article/details/82855823删除指定位置的节点void Erase(pList * pplist, pNode pos){ assert(pplist != NULL); assert(pos != NULL); if (*pplist == pos)//如果指向第一个节点...原创 2018-09-28 17:20:10 · 264 阅读 · 0 评论 -
【数据结构】单链表的约瑟夫环问题
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;void JosephCycle(pList * pplist, int num){ assert(pplist); pNode cur = NULL; pNode del = NULL; int count = 0; cur = *pplist;...原创 2018-09-28 17:31:14 · 730 阅读 · 0 评论 -
【数据结构】计数排序
计数排序排序原理:利用哈希的方法,将每个数据出现的次数都统计下来,哈希表是顺序的,所以我们统计完后直接遍历哈希表,将数据再重新写会原数据空间就可以完成排序。时间复杂度分析:我们需要遍历两次,第一次遍历统计字数据出现次数,遍历原数据,复杂度为O(N),第二遍遍历哈希表,向原空间写数据,遍历了范围次(range),所以总的时间复杂度O(N+range)。空间复杂度分析:开辟了范围(range)大...原创 2018-10-13 22:33:23 · 242 阅读 · 0 评论 -
【数据结构】归并排序
基本思想:将待排序的元素序列分为2个长度相等的子序列,对每一个子序列排序,然后将它们合并成一个序列,合并两个子序列的过程称为二路归并。归并排序核心步骤分组归并由于归并排序不依赖于待排序元素序列的初始输入状态,每次划分两个子序列的长度基本一致,所以归并排序的最好,最差和平均时间复杂度均为O(n*log2n).(稳定)代码:#include&amp;lt;stdio.h&amp;gt;#includ...原创 2018-10-14 10:09:59 · 181 阅读 · 0 评论 -
【数据结构】直接插入排序&&希尔排序
插入排序直接插入排序希尔排序基本思想:每一步将一个待排序的元素,按照其排序码的大小,插入到前面已经排好序的一组元素的合适位置上去,直到元素全部插完为止。直接插入排序代码实现:void InsertSort(int arr[], int size){ for (int i = 1; i &amp;amp;amp;amp;amp;lt; size; i++) { int key = arr[i]; int...原创 2018-10-14 11:10:33 · 815 阅读 · 0 评论 -
【数据结构】选择排序&&堆排序
选择排序直接选择排序堆排序直接选择排序基本思想:在元素集合a[i]–a[n-1]中选择关键码最大(小)的数据元素若它不是这组元素中国最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个元素)交换在剩余的a[i]-a[n-2](a[i+1]-a[n-2])集合中,重复上面的步骤,直到集合剩余1个元素时间复杂度为O(n2),不稳定代码:void Swap(int *...原创 2018-10-14 11:36:33 · 208 阅读 · 0 评论 -
【数据结构】冒泡排序&&快速排序
交换排序冒泡排序快速排序冒泡排序一次确定一个最大值或者最小值,两两比较,将最大值或者最小值交换到最右边或者最左边,N个元素需要N-1次排序void BubbleSort(int* num, int len){ if (num == NULL || len &amp;amp;amp;amp;amp;lt;= 0) return; //确定循环躺数 for (int i = 0; i &amp;amp;amp;amp;amp;lt原创 2018-10-14 13:55:39 · 600 阅读 · 0 评论 -
【数据结构】判断单链表是否带环若带环求环的长度求环的入口点
判断是否带环pNode IsCrossH(pList list1){ pNode fast = list1; pNode slow = list1; if (NULL == list1) return NULL; while (fast&amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;fast-&amp;amp;amp;amp;gt;next) { fast = fast-&am原创 2018-10-07 22:07:46 · 572 阅读 · 0 评论 -
【数据结构】求两个有序单链表交集(差集)
交集void UnionSetJ(pList list1, pList list2){ if (list1 == NULL || list2 == NULL) return; while (list1 &amp;amp;amp;&amp;amp;amp; list2) { if (list1-&amp;amp;gt;data &amp;amp;lt; list2-&amp;amp;gt;data)原创 2018-10-07 22:09:09 · 3870 阅读 · 0 评论 -
【数据结构】合并两个有序链表,合并后依然有序
pList Merge(pList list1, pList list2){ pList newlist = NULL; if (NULL == list1) { return list2; } if (NULL == list2) { return list1; } if ((list1)-&amp;amp;amp;gt;data &amp;amp;amp;lt; (list2)-&amp;amp;amp;gt原创 2018-10-07 22:10:14 · 392 阅读 · 0 评论 -
【设计模式】单例模式
文章目录1.单例模式基本介绍2.饿汉模式3.懒汉模式1.单例模式基本介绍2.饿汉模式3.懒汉模式原创 2018-11-06 14:24:19 · 160 阅读 · 0 评论