数据结构与算法
Pan_Some
这个作者很懒,什么都没留下…
展开
-
计算出书的全部页码中分别用到多少次数字的方法
问题:一本书的页码从自然数1开始顺序编码直到自然数n。求的页码按照通常的习惯编排,每个页码都不含多余的前...一本书的页码从自然数1开始顺序编码直到自然数n。求的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如第6页为6而非06或006等。试统计给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2…,9。实现方法:得到书的每一页数字n,n每次除以10并得到对应余数原创 2016-02-29 16:16:39 · 9571 阅读 · 4 评论 -
二叉树的遍历代码(先序遍历,中序遍历,后序遍历)
二叉树遍历主要有三种,分为前序遍历,中序遍历,后序遍历。 先序遍历: (1)先访问跟节点 (2)再先序访问左子树(递归) (3)再先序访问右子树(递归)中序遍历: (1)中序遍历左子树 (2)再访问根节点 (3)再中序遍历右子树后序遍历: (1)后续遍历左子树 (2)再后续遍历右子树 (3)再访问根节点#include<stdio.h>#include<stdlib.h>原创 2016-11-26 16:40:50 · 2722 阅读 · 0 评论 -
有N个人围成一圈,顺序排号。从第一个开始报数,(从1到3报数),凡报道3的人退出圈子,问最后留下的是原来第几号那位
问题:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到3的人退出圈子,下一个人从1开始报数,报到3的人退出圈子。如此下去,直到留下最后一个人。请按退出顺序输出退出圈子的人的编号思路:用数据结构中的循环链表解决此题代码:#include<stdio.h>#include<stdlib.h>typedef struct node{ int num; struct n原创 2016-07-07 14:01:22 · 4152 阅读 · 0 评论 -
判断奇偶 位运算
判断最后一位是否为1,1则是奇数#includevoid IsOdd(int i){ i&1==1? printf("奇数\n"):printf("偶数\n");}void main(){ IsOdd(34);}原创 2016-07-04 17:19:23 · 786 阅读 · 0 评论 -
C 链式栈
#include#includetypedef struct Stack{ int n; struct Stack* next;}Stack,*pStack;pStack initStack(){ pStack p=(pStack)malloc(sizeof(Stack)); p->next=NULL; return p;}void push(pStack *pHea原创 2016-06-05 21:24:18 · 285 阅读 · 0 评论 -
C单链表
#include#includetypedef struct Student{ int age; char name[100]; struct Student* pNext;}Node,*P; P createList() //创表{ int n;//学生数量 int i=1;//计数 P pNew=NULL; P pHead=NULL,pTail=NULL;原创 2016-06-05 21:18:16 · 450 阅读 · 0 评论 -
C指针传递,指向指针的指针。
以下错误的方式,q只是形参,虽只向malloc()分配的内存,但p并不只向#include<stdio.h>#include<malloc.h>void f(int *q){ q=(int*)malloc(sizeof(int)); *q=4;}void main(){ int *p=NULL; f(p); printf("%d\n",*p);}原创 2016-06-05 21:43:18 · 393 阅读 · 0 评论 -
最少硬币问题 动态规划
问题描述需要找零x元,有n种面值硬币,求找零最少需要硬币个数的方法。 问题分析这题如果用贪心算法做,很可能无法得到最优解甚至无法无法找零,比如要找零11元,有{5,6,10}三种硬币,最优解是{5,6},用贪心就会先用10块钱去消耗,那这题就无法完成。所以这题用动态规划最合适,利用递推和缓存,动态规划将问题拆分成若干个子问题,通过子问题的最优解不断往上递推得出问题的最优解,这比贪心算法慢,但得到的原创 2016-05-30 20:42:12 · 5977 阅读 · 0 评论 -
二叉树的建立
二叉树的先序建立思路就像先序遍历一样 ,利用递归思想。 链接:二叉树遍历#include<stdio.h>#include<stdlib.h>typedef struct BinaryTreeNode { int num; struct BinaryTreeNode* leftNode; struct BinaryTreeNode* rightNode;}BTNode原创 2016-11-27 17:33:04 · 387 阅读 · 0 评论