数据结构与算法
文章平均质量分 52
“好记性不如烂“博客
这个作者很懒,什么都没留下…
展开
-
哈希表 - (代码、分析 )
目录:代码:分析:代码:BSTree.hBSTree.c二叉排序树(Binary Sort Tree) 又称为二叉查找树(Binary Search Tree)Hash.h#ifndef _HASH_H_#define _HASH_H_typedef void Hash;//定义哈希表类型typedef void HashKey;//定义哈希表键类型typedef void HashValue;//定义定义哈希表值类型typedef int (Hash_Compare)(HashK原创 2021-01-04 11:02:45 · 200 阅读 · 0 评论 -
二叉排序树(Binary Sort Tree) 又称为二叉查找树(Binary Search Tree) - (代码、分析)
目录:代码:分析:代码:BSTree.h#ifndef _BSTREE_H_#define _BSTREE_H_typedef void BSTree;//定义二叉树类型typedef void BSKey;//定义节点的键值类型(用于节点排序)typedef struct _tag_BSTreeNode BSTreeNode;//定义二叉树节点类型struct _tag_BSTreeNode{ BSKey* key;//键值 BSTreeNode* left;//左子原创 2021-01-04 10:32:43 · 210 阅读 · 0 评论 -
最小连通-(代码、分析、汇编)
目录:介绍:代码:分析:汇编:介绍:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出普利姆算法,图论中一种算法,可在加权连通图里搜索最小生成树。此算法搜索到的边子集所构成的树中,不但包括连通图里的所有顶点,且所有边的权值最小代码:#include <stdio.h>#include <stdlib.h>/*程序描述:原创 2021-01-04 09:53:16 · 1079 阅读 · 0 评论 -
MGraph图(代码、分析、汇编)
LGraph图(代码、分析、汇编)原创 2021-01-02 17:37:27 · 3716 阅读 · 0 评论 -
线索化二叉树(代码 、分析 、汇编)
线索化二叉树(代码 、分析 、汇编)原创 2021-01-01 22:07:37 · 121 阅读 · 0 评论 -
二叉树遍历(代码,分析,汇编)
代码:BTree.hBTree.c二叉树(多路平衡搜索树)LinkQueue.h#ifndef _LINKQUEUE_H_#define _LINKQUEUE_H_typedef void LinkQueue;//定义队列类型LinkQueue* LinkQueue_Create();//声明创建队列函数void LinkQueue_Destroy(LinkQueue* queue);//声明销毁队列函数void LinkQueue_Clear(LinkQueue* queue)原创 2020-12-31 17:30:41 · 390 阅读 · 0 评论 -
二叉树(多路平衡搜索树)-(代码、分析、汇编)
目录:代码:分析:汇编:代码:BTree.h#ifndef _BTREE_H_#define _BTREE_H_#define BT_LEFT 0 //定义左子节点标识#define BT_RIGHT 1 //定义右子节点标识typedef void BTree;//定义树类型typedef unsigned long long BTPos;//定义树位置类型typedef struct _tag_BTreeNode BTreeNode;//定义树节点类型struct _tag_B原创 2020-12-31 16:58:33 · 303 阅读 · 0 评论 -
树存储结构(代码、分析、汇编)
目录:代码:分析:汇编:代码:LinkList.hLinkList.c线性表GTree.h#ifndef _GTREE_H_#define _GTREE_H_typedef void GTree;//定义树类型typedef void GTreeData;//定义节点中存放数据的类型typedef void (GTree_Printf)(GTreeData*);//定义一个参数是一个节点中存放数据的类型指针并且无返回值的函数类型GTree* GTree_Create();//声明创原创 2020-12-31 16:14:54 · 183 阅读 · 0 评论 -
N Queen(代码、分析、汇编)
目录:代码:分析:汇编:代码:main.c#include <stdio.h>/*程序描述: 输出N*N中符合左右对角线与上下左右方向都没被使用的位置在每一行的所有情况 使用检测左上角,正上角,右上角 三个方向有没有被使用来判断该行该位置是否可以使用 当检测行大于N时,表示完成一种情况,按下回车键。从大于N行的这次find函数调用出栈。 返回调用(使用大于N行的参数调用了find函数的)处。就是N行调用find函数的地方 执行将N行原本选用好的位置重置原创 2020-12-31 15:29:09 · 176 阅读 · 0 评论 -
递归-计算字符串长度(代码、分析、汇编)
目录:代码:分析:汇编:代码:main.c#include <stdio.h>//该程序用递归计算字符串长度int strlen(const char* s){ if( s == NULL ) { return -1; } else if( *s == '\0' ) { return 0; } else { return strlen(s+1) + 1; }}原创 2020-12-30 14:36:57 · 483 阅读 · 0 评论 -
递归-输出字符串所有的组合情况(代码、分析、汇编)
目录:代码:分析:汇编:代码:#include <stdio.h>/* 程序描述: 输出字符串所有的组合情况 使用permutation函数进行将指定的下标值,与最大下标值这个范围的每个下标值进行交换 每调用一次permutation函数表示只处理指定下标的值,每次指定位置交换后,再调用b+1 进行后面一个位置的交换,直到要交换的位置的与最大下标值相等时,表示没得交换了 输出该字符串,这次的函数出栈返回调用处(就是处理前一个字符的地方),将前一原创 2020-12-30 14:33:28 · 334 阅读 · 0 评论 -
递归-汉诺塔(代码、分析、汇编)
代码:#include <stdio.h>void hanoi(int n, char a, char b, char c){ if( n > 0 ) { if( n == 1 ) { printf("%c -> %c\n", a, c); } else { hanoi(n-1, a, c, b);原创 2020-12-30 14:22:41 · 400 阅读 · 0 评论 -
递归-裴波那契数列(代码、分析、汇编)
目录:代码:分析:汇编:代码:main.c#include <stdio.h>//该程序输出裴波那契数列 int fibonacci(int n){ if( n > 1 ) { return fibonacci(n-1) + fibonacci(n-2);//注意:这里调用是一直调用左边函数返回后才调用右边函数的 } else if( n == 1 ) { return 1; } el原创 2020-12-30 14:15:30 · 554 阅读 · 0 评论 -
递归问题(代码、分析、汇编)
目录:代码:分析:汇编:代码:main.c#include <stdio.h>//该程序使用递归将字符串从后往前依次输出void reverse(char* s){ if( (s != NULL) && (*s != '\0') ) { reverse(s + 1); printf("%c", *s); //输出54321 }}int main(){ reverse("123原创 2020-12-30 11:12:26 · 144 阅读 · 0 评论 -
栈应用_将算式转成按运算符优先级分布(代码、分析、汇编)
目录:代码:分析:汇编:代码:LinkList.hLinkList.cLinkStack.hLinkStack.c栈-线性表main.c#include <stdio.h>#include "LinkStack.h"/*该程序将 正常的算式 转换成按照运算符优先分布的算式比如:9+(3-1)*5+8/2 转换成 931-5*+82/+注意:正常算式 只能是一位数*/int isNumber(char c)//定义检测是否数字函数{ return原创 2020-12-30 10:38:52 · 245 阅读 · 0 评论 -
栈应用_计算按运算符优先级分布的算式(代码、分析、汇编)
目录:代码:分析:汇编:代码:LinkList.hLinkList.cLinkStack.hLinkStack.c栈-线性表main.c#include <stdio.h>#include "LinkStack.h"//该程序用栈来计算算式 /* 比如:1*5+6/(5-3) 可以转换成 15*653-/+ 字符串进行运算 注意:每个数只能是一位数 */ int isNumber(char c)//检测是否是数字{ return ('0' <原创 2020-12-30 10:18:44 · 335 阅读 · 0 评论 -
栈应用_检测成对符号是否正确使用(代码、分析、汇编)
目录:代码:分析:汇编:代码:LinkList.hLinkList.cLinkStack.hLinkStack.c栈-线性表main.c#include <stdio.h>#include <stdlib.h>#include "LinkStack.h"//该程序是检查字符串中的出现一对符号时,有没有出现交叉错误使用/*比如: < ( > ) 这种情况检测失败 < > ( ) 这种情况检测成功 <原创 2020-12-29 17:20:01 · 150 阅读 · 0 评论 -
栈-顺序表(代码、分析、汇编)
代码:SeqList.h#ifndef _SEQLIST_H_#define _SEQLIST_H_typedef void SeqList;//定义顺序表类型typedef void SeqListNode;//定义顺序表节点类型SeqList* SeqList_Create(int capacity);void SeqList_Destroy(SeqList* list);void SeqList_Clear(SeqList* list);int SeqList_Length原创 2020-12-29 15:11:02 · 179 阅读 · 0 评论 -
栈-线性表(代码、分析、汇编)
目录:代码:分析:汇编:代码:LinkList.h#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef void LinkList; //定义链表类型typedef struct _tag_LinkListNode LinkListNode;//定义链表节点类型struct _tag_LinkListNode{ LinkListNode* next;};LinkList* LinkList_Create();void LinkL原创 2020-12-29 14:59:45 · 140 阅读 · 1 评论 -
双向链表(代码、分析、汇编)
目录:代码:分析:汇编:代码:DLinkList.h#ifndef _DLINKLIST_H_#define _DLINKLIST_H_typedef void DLinkList;typedef struct _tag_DLinkListNode DLinkListNode;struct _tag_DLinkListNode{ DLinkListNode* next;//指向下节点 DLinkListNode* pre;//前节点};DLinkList* DLink原创 2020-12-29 14:45:04 · 184 阅读 · 0 评论 -
循环链表(代码、分析、汇编)
代码:CircleList.h#ifndef _CIRCLELIST_H_#define _CIRCLELIST_H_typedef void CircleList;typedef struct _tag_CircleListNode CircleListNode; struct _tag_CircleListNode{ CircleListNode *next; };CircleList * CircleList_Create();void CircleList_Destr原创 2020-12-29 10:51:49 · 190 阅读 · 0 评论 -
静态链表(代码、分析、汇编)
目录:代码:分析:汇编:代码:StaticList.h#ifndef _STATICLIST_H_#define _STATICLIST_H_typedef void StaticList; //空类型静态表类型可以接收任何类型的静态表类型typedef void StaticListNode;//空类型节点类型可以接收任何类型的节点类型StaticList * StaticList_Create(int capacity);//声明静态表生成函数void StaticList_Des原创 2020-12-28 18:00:18 · 192 阅读 · 0 评论 -
线性表(代码、分析、汇编)
目录:代码:分析:汇编:代码:LinkList.h#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef void LinkList; //定义线性表类型typedef struct _tag_LinkListNode LinkListNode;//定义线性表节点类型struct _tag_LinkListNode{ LinkListNode* next;//节点指针指向下一个节点};LinkList* LinkList_Create(原创 2020-12-28 14:32:53 · 162 阅读 · 0 评论 -
顺序表(代码、分析、汇编)
目录:代码:分析:汇编:代码:SeqList.h#ifndef _SEQLIST_H_ #define _SEQLIST_H_ typedef void SeqList; //定义链表数据类型,void因为要适用不同链表数据类型 typedef void SeqListNode; //定义链表节点类型 void因为要适用不同节点类型 SeqList* SeqList_Create(int capacity);//声明创建链表函数void SeqList_Destroy(SeqList原创 2020-12-28 11:10:33 · 206 阅读 · 0 评论