数据结构
Singular__point
stay foolish ,stay hungry !
展开
-
数据结构 串操作 判断回文序列
一个长度为n的串采用大小为4的块链结构存储,设计算法判断给定的串是否中心对称。对于这个题目我有两个思路一是用顺序表,每次申请单位为4的一个空间。代码如下:#include#include#include#include#includeusing namespace std;#define MAX 20typedef char* Type;char e[4];char原创 2016-10-12 10:44:39 · 2797 阅读 · 0 评论 -
2路归并排序算法(C语言)
转载自:http://blog.csdn.net/caryaliu/article/details/7475700将两个按值有序序列合并成一个按值有序序列,则称之为二路归并排序,下面有自底向上和自顶向下的两种排序算法,自顶向下的排序在本文末讲述,使用递归实现,代码较简洁,经供参考。1. 归并子算法:把位置相邻的两个按值有序序列合并成一个按值有序序列。例如把序列 X[s..u]转载 2016-12-18 09:58:48 · 9341 阅读 · 0 评论 -
一元多项式求和
问题描述:设计算法用顺序表实现两个多项式相加。数据描述:两个多项式f(x)=2x^4+3x^2-5x+10,g(x)=4x^4+10x^2+x, 求和结果:f(x)+g(x)=6x^4+13x^2-4x+10。代码如下:#include#include#includetypedef struct List{ int xishu; //系数 int zhishu; /原创 2016-12-25 16:28:46 · 966 阅读 · 0 评论 -
堆排序
转载自:点击打开链接#include //array是待调整的堆数组,i是待调整的数组元素的位置,nlength是数组的长度//本函数功能是:根据数组array构建大根堆(改变大于号小于号可建立小根堆)void HeapAdjust(int array[],int i,int nLength){ int nChild; int nTemp; for(;2*i+转载 2016-12-19 15:18:42 · 240 阅读 · 0 评论 -
静态链表 c语言实现
转载自:http://blog.csdn.net/jiuyueguang/article/details/12090569目录(?)[+][html] view plain copy 0:实现静态链表的方法定义一个较大的结构数组作为备用结点空间(即存储池)。当申请结点时,每个结点应含有两个域:转载 2016-12-28 15:05:34 · 473 阅读 · 0 评论 -
算法时间复杂度的计算
转载自:http://blog.csdn.net/firefly_2002/article/details/8008987一、概念时间复杂度是总运算次数表达式中受n的变化影响最大的那一项(不含系数)比如:一般总运算次数表达式类似于这样:a*2^n+b*n^3+c*n^2+d*n*lg(n)+e*n+fa ! =0时,时间复杂度就是O(2^n);a=0,bO(n^3);a,b=转载 2016-12-28 19:42:08 · 1861 阅读 · 0 评论 -
(迪杰斯特拉)最短路径C语言
用邻接表存储的有向图,求其最短路径。#include#include#include#include#include#includeusing namespace std;#define MAX 20typedef char Dtype;typedef int mapmax[MAX][MAX];int visited[MAX];//标记最优的那个集合 int D[MAX]原创 2017-01-06 11:37:32 · 1136 阅读 · 0 评论 -
已知先序+中序构造二叉树,已知后序+中序构造二叉树(C语言)
代码如下:#include#includetypedef struct Bitree{ char data; struct Bitree *lchild; struct Bitree *rchild;}Bitree,*Bi;void PreOrder(Bitree *p);void MidOrder(Bitree *p);void PostOrder(Bitree *p);原创 2016-12-29 21:21:30 · 3467 阅读 · 3 评论 -
根据中序和层次遍历序列,构造二叉树
代码如下,思路详见注释:#include#include#includeusing namespace std;typedef struct Bitree{ char data; struct Bitree *lchild; struct Bitree *rchild;}Bitree,*Bi;typedef struct{ int lel; //指向当前处理的元素在层原创 2016-12-31 11:31:25 · 5918 阅读 · 2 评论 -
(递归+非递归)迷宫求解
代码如下:#include#include#include#include#include#include#include#includeusing namespace std;int map[50][50],visited[50][50],rout[50][50];int dir[][2]={0,1,1,0,0,-1,-1,0}; //方向二维数组:0右,1下,2左,3原创 2017-01-12 16:39:13 · 1167 阅读 · 0 评论 -
构建二叉排序树(非递归)
大意:构建一个简单的int型二叉排序树,并用中序遍历实现升序降序输出。代码如下:#include#include#include#include#include#includeusing namespace std;typedef struct Node{ int data; Node *l,*r;}Node,*pre;void travel(pre T){ i原创 2016-11-24 21:31:08 · 2739 阅读 · 0 评论 -
折半查找顺序表(递归与非递归)
核心代码如下:#include#includetypedef int Type;#define MAX 100typedef struct{ Type *elem; int length;}S;int k;void creat(S &L){ L.elem=(Type *)malloc(MAX*sizeof(Type)); if(!L.elem) exit(0);原创 2016-11-23 19:45:41 · 1612 阅读 · 0 评论 -
快速排序(递归+非递归)
#include#include #includeusing namespace std;//---------------实现一趟排序------------- int part(int a[],int first,int last){ int key=a[first]; while(first<last) { while(first=key)原创 2016-12-14 19:47:28 · 2410 阅读 · 0 评论 -
邻接表转换为邻接矩阵
代码如下,分析详见注释 :#include#include#include#includeusing namespace std;//------------邻接矩阵----------- #define MAX 20typedef char Dtype;typedef int mapmax[MAX][MAX];typedef struct{ int dian,hu;原创 2016-11-02 22:43:33 · 9199 阅读 · 0 评论 -
数据结构 数组操作 稀疏矩阵采用三元组存储,设计算法求两个矩阵的和。
不解释,请看注释,代码如下:#include#include#include#include#includeusing namespace std;#define MAX 12500 typedef int Type;typedef struct{ int i,j; Type e;}T;typedef struct{ T data[MAX+1]; int m,n原创 2016-10-13 21:44:22 · 1279 阅读 · 0 评论 -
满m叉树的性质
题目论述:一个深度为h的满m叉树有以下性质:第h层上的结点都是叶子结点,其余各层上每个结点都有m棵非空子树,如果按层次顺序从1开始对全部结点进行编号,求:1)各层的结点的数目是多少? 2)编号为i的结点的双亲结点(若存在)的编号是多少?3)编号为i的结点的第j个孩子结点(若存在)的编号是多少?4)编号为i的结点有右兄弟的条件是什么?如果有,其右兄弟的编号是多少?原创 2016-10-24 19:48:30 · 8732 阅读 · 2 评论 -
判断完全二叉树
二叉树采用二叉链表存储,设计算法判断给定的二叉树是否是一棵完全二叉树。核心代码:int IsCompleteTree(BiTree Bt){ Sq q;BiTree e; InitSq(q); InSq(q,Bt);//根节点入队列 OutSq(q,e); while(e!= NULL)//遇到空前,持续出队 { InSq(q,e->lchild);//不管是不是NU原创 2016-10-24 19:50:33 · 5114 阅读 · 0 评论 -
求树的深度(层次遍历)
题目描述: 二叉树采用二叉链表存储,设计一个非递归算法求二叉树的高度。核心代码: (全部代码请参照本博客判断完全二叉树)void Leveltravel(BiTree Bt){ if(Bt) { int max; Sq q;BiTree e; InitSq(q); Bt->f=1; InSq(q,Bt);//根节点入队列 while(!Isempty(q))原创 2016-10-25 21:51:56 · 4388 阅读 · 0 评论 -
C++实现栈和队列
栈:注意头文件以及数据类型。#incude//下面将数据类型写入<>中,也可以是自己构造的结构体//例如int 类型 stack s; s.empty(); 如果栈为空返回true,否则返回false s.size(); 返回栈中元素的个数 s.pop(); 删除栈顶元素但不返回其值 s.原创 2016-11-29 20:53:48 · 342 阅读 · 0 评论 -
利用邻接矩阵存储无向图,并实现BFS(非递归) DFS(递归+非递归)两种遍历
代码如下:#include#include#include#includeusing namespace std;//------------邻接矩阵----------- #define MAX 20typedef char Dtype;typedef int mapmax[MAX][MAX];int visited[MAX];typedef struct{ int原创 2016-11-15 18:57:25 · 2702 阅读 · 0 评论 -
用邻接表存储有向图并实现DFS(递归+非递归)BFS(非递归)两种遍历
代码如下:#include#include#include#includeusing namespace std;#define MAX 20typedef char Dtype;typedef int mapmax[MAX][MAX];int visited[MAX];//-----------邻接表--------------typedef char Diantype原创 2016-11-15 19:06:48 · 3294 阅读 · 0 评论 -
设计算法,输出有向无环图G的拓扑序列。图采用邻接表存储。
代码如下:#include#include#include#includeusing namespace std;#define MAX 20typedef char Dtype;typedef int mapmax[MAX][MAX];int visited[MAX];//-----------邻接表--------------typedef char Diantype原创 2016-11-19 16:02:26 · 2033 阅读 · 0 评论 -
hdu 5521 Meeting
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5521分析:一个1到n的图,图被分成了几个集合,集合 i 内的点之间到达的时间是 Wi ,找一个点是的从1点的人和从n点的人接头,时间最短,如果多种答案,把点都输出。解题思路:不可能在点与点之间建图,这样开销太大了,每加一个集合,可以新加一个点,这样最多不会超过2*m原创 2017-10-24 15:28:08 · 278 阅读 · 0 评论