Algorithm
liuke0002
IT屌丝!
展开
-
普里姆算法
typedef struct{ int numVertexes; int numEdges; int arc[MAXVEX][MAXVEX];}MGraph;void prim(MGraph G){ int min,i,j,k; int adjvex[MAXVEX]; int lowcost[MAXVEX]; lowcost[0]=0; adjvex[0]=0; for(i=原创 2016-03-30 22:24:06 · 591 阅读 · 0 评论 -
牛客网 求1到n 整数中1的个数
import java.util.Scanner;/** * 当计算右数第i位包含的X的个数时 * * 1.取第i位左边(高位)的数字,乘以10^i-1,得到基础值 a * 2.取第i位数字,计算修正值 * (1)如果大于X,则结果为a+10^i-1 * (2)如果小于X,则结果为a * (3)如果等于X,则取第i位右边(低位)数字,设为b,最后结果为a+b+1 *原创 2016-09-02 10:45:38 · 1040 阅读 · 0 评论 -
约瑟夫的java实现
import java.util.Scanner;public class Main { public static void main(String ss[]) { int n,m; Scanner sc=new Scanner(System.in); m=sc.nextInt(); n=sc.nextInt(); Node first=new Node(1);原创 2016-08-31 21:06:49 · 435 阅读 · 0 评论 -
树
树:n个节点的优先集。当n=0时成为空树-有且仅有一个特定的称为根的节点-当n>1时,其余节点可分为m个互不相交的有限集T1、T2...Tm,其中每一个集合本身又是一棵树,并且称为根的子树。节点拥有的子树数称为节点的度,树的度取树内各节点的度的最大值。度为0的节点称为叶节点树中节点的最大层次称为树的深度或高度。树的存储结构:双亲表示法原创 2016-03-27 20:49:42 · 293 阅读 · 0 评论 -
括号匹配
算法思想:若是左括号,则统一入栈;若是右括号,先判断栈是否为空,若栈为空,则匹配错误;若栈不为空,然后判断栈顶符号是否是与之匹配的括号,若是则将栈顶元素出栈,否则匹配错误;最后检验栈是否为空,若为空,则匹配成功!#include#include#include#define INIT_STACK_SIZE 20#define STACK_INCRE_SIZE 10typede原创 2016-03-25 16:11:07 · 318 阅读 · 0 评论 -
二进制转十进制(栈实现)
#include#include#include#define STACH_INIT_SIZE 20#define STACH_INCRE_SIZE 10typedef struct { char *base; char *top; int stackSize;}sqStack;void initStack(sqStack *s){//对其进行修改,往往传一个指针 s->原创 2016-03-25 14:52:40 · 520 阅读 · 0 评论 -
七种排序方法介绍
希尔排序#includevoid shellSort(int k[],int n){ int i,j,temp; int gap=n; do{ gap=gap/3+1; for(i=gap;i<n;i++){ if(k[i]<k[i-gap]){ temp=k[i]; for(j=i-gap;k[j]>temp;j-=gap){ k[j+ga原创 2016-04-06 18:17:48 · 387 阅读 · 0 评论 -
线性表
线性表第一个元素无前驱,最后一个元素无后继,其他元素只有一个前驱,一个后继插入,删除,修改,查询线性表顺序存储结构:插入和删除时,时间复杂度O(n)线性表链式存储结构:头指针:指向第一个节点的指针,若链表有头结点,则是指向头结点的指针。头指针具有标识作用,所以常用头指针冠以链表的名字无论链表是否为空,头指针均不为空头指针是链表的必要元素。头结点:不是链表的必原创 2016-03-24 12:18:48 · 336 阅读 · 0 评论 -
魔术师发牌问题
循环链表原创 2016-03-24 11:29:30 · 509 阅读 · 0 评论 -
约瑟夫初级源码
/*约瑟夫问题 循环链表*/#include#includetypedef struct node{ int data; struct node *next;}node;node *create(int n){ node *p=NULL,*head; head=(node *)malloc(sizeof(node)); p=head; node *s; int i=1;原创 2016-03-23 19:12:05 · 472 阅读 · 0 评论 -
中序遍历(非递归)
//前序遍历/*前序遍历的递归实现*/void preOrder(BinTree *root){ if(NULL!=root){ coutdata<<" "; preOrder(root->lchild); preOrder(root->rchild); }}/*非递归实现*//*根据前序遍历访问的顺序,优先访问根节点,然后再分别访问左孩子和右孩子。即对于任一节点,其可原创 2016-09-18 21:55:39 · 13278 阅读 · 5 评论