![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 77
v_yang_guang_v
hello world!
展开
-
双向循环链表的创建,增删查改
#include using namespace std;typedef int ElemType;//定义双向循环链表的结点typedef struct DuLNode{ ElemType elem; struct DuLNode *prior; struct DuLNode *next;}DuLNode,*DuLinklist;//初始化一个空链表void ini原创 2015-04-10 13:50:27 · 558 阅读 · 0 评论 -
查找二叉树的创建插入查找删除
#includeusing namespace std;typedef int ElemType;typedef struct Node{ ElemType data; struct Node *lchild; struct Node *rchild;}*BSTree;bool search_BSTree(BSTree pTree,int key,BSTree par原创 2015-06-15 11:46:49 · 646 阅读 · 0 评论 -
哈希表的创建查询插入删除销毁
#includeusing namespace std;#define M 5//定义数据类型typedef int ElemType ;//定义哈希表上挂的链表的结点typedef struct Node{ ElemType data; struct Node *next;}Node,*pNode;//定义哈希表上的表槽typedef struct HashN原创 2015-06-15 17:52:42 · 1439 阅读 · 0 评论 -
图的广度优先遍历BFS(分别以邻接矩阵和邻接链表实现)
算法描述: 设图G的初始状态是所有顶点均未被访问过,在G中的任选一顶点vi为初始出发点,则广度优先遍历 可定义如下:首先,访问初始出发点vi,接着依次访问vi的所有邻接点w1,w2,...,wk;然后,依次访问w1,w2,...,wk 的邻接的所有未被访问过的顶点,依次类推,直到图中所有的和初始点vi有路径相通的顶点都被访问过为止。算法实现:转载 2015-06-13 17:05:34 · 3433 阅读 · 0 评论 -
动态规划三部曲之解决最长公共子序列问题(三)
#includeusing namespace std;//该函数输出位置矩阵,返回最长长度int LCS(char s1[],int m,char s2[],int n,int **&results) { int **c=(int**)malloc(sizeof(int*)*(m+1)); int **result=(int**)malloc(sizeof(int*)*(m+1原创 2015-06-30 17:18:12 · 381 阅读 · 0 评论 -
动态规划三部曲之一个故事教你透彻理解动态规划(一)
通过金矿模型介绍动态规划 对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂,无异性,不让读者感到迷惑,引导读者去思考,所以如果你在阅读中发现有不通顺的地方,让你产生错误理解的地方,让你难得读懂的地方,请跟贴指出转载 2015-06-29 20:35:39 · 4658 阅读 · 6 评论 -
动态规划三部曲之01背包问题的分析和实现(二)
用w[i]表示第i件物品的重量用v[i]表示第i件物品的价值用f[i][j]表示用能 装下总重量为j的背包去装前i件物品能够装最大的价值思考动态规划的第一点----最优子结构: 对于前i件物品,以及给定的包容量,要么第i件物品装进去,要么不装进去,f[i][j]必然存在于二者之一。思考动态规划的第二点----子问题重叠: 对于任意前k原创 2015-06-30 10:28:13 · 497 阅读 · 0 评论 -
最小生成树的 克鲁斯卡尔算法
#includeusing namespace std;//该算法的时间复杂度为O(elge);Kruskal算法的时间主要取决于边数,它较适合于稀疏图。#define MAX_VERTEX_SIZE 15#define MAX_EDGE_SIZE 15typedef char vertex;typedef struct edge{ int m; int n; int w;原创 2015-06-24 17:56:01 · 376 阅读 · 0 评论 -
二分查找
#includeusing namespace std;//二分查找等于某个数的坐标int bs1(int a[],int size,int v){ int low=0; int high=size-1; int mid; while(low<=high) { mid=low+(high-low)/2; cout<<low <<mid <<high<<endl; i原创 2015-06-14 13:03:25 · 298 阅读 · 0 评论 -
各种排序算法
#includeusing namespace std;#define MAXSIZE 10//1.冒泡排序void bubble_sort(int a[],int n){ for(int i=0;i<n-1;i++) { for(int j=i;j<n;j++) { if(a[i]>a[j]) swap(a[i],a[j]); } }}//2.原创 2015-06-16 16:36:33 · 384 阅读 · 0 评论 -
二叉树的创建,以及递归前中后序以及层次遍历
#includeusing namespace std;typedef char ElemType ;typedef struct Node{ElemType data;struct Node *lChild;struct Node *rChild;}Node,*BtTree;void init(BtTree &bt){bt=NU原创 2015-06-11 20:54:43 · 447 阅读 · 0 评论 -
最小生成树的prim算法实现
MST(Minimum Spanning Tree,最小生成树)问题有两种通用的解法,Prim算法就是其中之一,它是从点的方面考虑构建一颗MST,大致思想是:设图G顶点集合为U,首先任意选择图G中的一点作为起始点a,将该点加入集合V,再从集合U-V中找到另一点b使得点b到V中任意一点的权值最小,此时将b点也加入集合V;以此类推,现在的集合V={a,b},再从集合U-V中找到另一点c使得点c到V中任原创 2015-06-24 15:11:27 · 404 阅读 · 0 评论 -
队列的线性存储
循环 队列不能再次增加空间,只能设置一个最大的长度。而对于无法估计长度的队列只能使用链式队列。上图为线性循环队列,队列尾部指向队列最后一个元素的下一位,队列首部和尾部之间有一个空位置不放元素,用于区分队列满还是空。#includeusing namespace std;#define ElemType int #define MAXSIZE 100typedef st原创 2015-05-07 10:13:30 · 468 阅读 · 0 评论 -
栈的线性存储
#includeusing namespace std;typedef int ElemType ;#define init_space 100#define incre_space 10struct SequenceStack{ ElemType *base; ElemType *top; int stacksize;};int init(SequenceStack &原创 2015-05-05 15:50:49 · 310 阅读 · 0 评论 -
栈的链式存储结构
#include using namespace std;#define ElemType int typedef struct Node{ ElemType elem; struct Node *next;}Node,*linklist;int init(linklist &head){ head=(Node*)malloc(sizeof(Node)); if(!he原创 2015-05-05 12:39:49 · 281 阅读 · 0 评论 -
循环链表的创建及遍历
#includeusing namespace std;typedef int ElemType;typedef struct Node{ ElemType elem; struct Node *next; }Node,*linklist;//创建循环链表Node *createList(Node *head,int n){ Node *p; for(int i=1;原创 2015-04-06 21:56:20 · 10450 阅读 · 0 评论 -
顺序表的实现及增删查改
#include using namespace std;#define InitSpace 100#define IncSpace 10typedef int datatype;//定义结构体typedef struct seqlist{ datatype *elem; int listlength; int length;}sequence_list;//初始原创 2015-04-04 17:48:50 · 510 阅读 · 0 评论 -
单线性链表的创建,遍历以及增删查改
#includeusing namespace std;typedef int datatype;typedef struct LNode{ datatype data; struct LNode *next;}LNode,*linklist;//创建链表,带返回值//LNode * createLinklist(linklist &ll,int n)//ll为指针变量?原创 2015-04-04 19:50:59 · 514 阅读 · 0 评论 -
图的深度优先遍历DFS(分别以邻接矩阵和邻接表实现)
#includeusing namespace std;#define MAX_VEX_NUM 50typedef char VertexType; typedef enum{ UDG,DG}GraphType;typedef struct Graph{ VertexType name[MAX_VEX_NUM]; int adjMatrix[MAX_VEX_NUM][M原创 2015-06-13 12:07:03 · 4997 阅读 · 0 评论