
数据结构与算法
文章平均质量分 77
__ever
业精于勤,荒于嬉;行成于思,毁于随
展开
-
栈的应用--简单四则运算
思想:我们平时输入的四则运算表达式,例如:9*(3-1)+2,属于中缀表达式。我们需要将它转换成后缀表达式:9 3 1 - * 2 +的形式求值。其中需要两个栈:数字栈和运算符栈。过程:逐个读取中缀表达式(char型):9*(3-1)+21.如果是数字则压入数字栈(如果是大于一位的数字则需要写个函数转换成int型)2.如果是'('则压入运算符栈中3.如果是'+'或者原创 2016-05-11 13:29:18 · 6236 阅读 · 2 评论 -
字符串的首尾匹配算法
问题描述:两个字符串s,t 判断t是否为s的子串。算法过程:s[i]==t[j]时,比较t的尾部和对应的s的元素,然后首尾并进直到首尾相遇代码:/**********字符串首尾匹配算法************//*如果字符串t和字符串s相等那么 互为子/主串**/#include#define MAXSIZE 10005int com_string(cha原创 2016-05-24 16:58:22 · 3105 阅读 · 0 评论 -
二分法查找
利用二分法进行查找,可以缩短查找的时间,时间复杂度log n(n是数据的长度)。假设要查找的数为X,并设置first 和last指针思想:在将数据按顺序排列好后(假设是从小到大),每次寻找顺序表first到last的中间的数和X比较。如果X比中间数大,那么更新first指针指向这个中间数的位置;如果X比中间数小,那么更新last指针指向这个中间数的位置。如此重复.......最后如果l原创 2016-05-02 13:21:00 · 269 阅读 · 0 评论 -
多项式相加
多项式相加其实就是两个链表的合并,而且不用申请新的空间假设:有两个链表a和b需要进行多项式相加,结果是链表c。思想:首先让链表c指向其中一个链表(这里假设是a),然后比较a和b每个节点的指数1..如果a和b的节点指数相同则再比较是否等于0,如果不等于0则将c指向这个a这个节点并更新这个节点,同时释放b的这个节点;如果等于0则c指向的节点不变,a和b指向下一个节点;原创 2016-05-02 13:44:31 · 579 阅读 · 1 评论 -
改进的KMP算法
KMP算法是字符串间进行匹配的一种算法,区别于一般的简单模式匹配算法。假设有主串s和子串t,判断t是否是s的子串???一般的算法是将s[i]和t[j]逐个比较,当s[i]==t[j]时i++;j++;当s[i]!=t[j]时,i和j的值回溯i=i-j+1;j=0;这种算法当遇到子串t有较多元素重复或者s和t有较多相同时是比较低效的,所以采用KMP算法。KMP算法的核心是采用一个数组原创 2016-05-27 21:48:55 · 1572 阅读 · 0 评论 -
树和二叉树的一些基础知识
树:1.树是递归的一种体现,树中有子树2.树中的子树之间互不相交3.一棵树由根节点(root),分支节点和叶节点(leaf)组成或者说是由一个根节点和若干子树构成4.树的度(degree)是树内各节点的度的最大值5.节点的度是节点的分支数6.一棵树的最大层数(level)是它的深度(deep)7.左右子树不能互换的树称为有序树8.森林(forest)是由m棵互不原创 2016-05-29 23:46:53 · 1240 阅读 · 0 评论 -
用循环队列解决二项式展开式的系数--杨辉三角
/*****************************************************用循环队列解决(a+b)i次方的二项式展开式的系数*****************************************************/#include#define MAXSIZE 50int main(void){ int num[原创 2016-05-19 21:55:34 · 2149 阅读 · 0 评论 -
由前序和中序建立二叉树的算法
网上根据前序和中序建立二叉树的代码是这样的:void Create_Tree(Tree *T,int pre_s,int pre_e,int in_s,int in_e){ //pre_s表示前序的第一个元素下标;pre_e代表前序最后一个元素下标 //in_s代表中序的第一个元素下标;in_e代表中序的最后一个元素下标 //preord代表前序的字符串;原创 2016-06-02 14:52:43 · 2046 阅读 · 0 评论 -
并查集
什么是并查集,并查集就是先给出一些关系,然后你就可以把这些关系合并成一个集合,然后在询问你里面的某些元素之间是不是有关系并查集的英文叫Union--Find(其实是该算法包含union和find两个函数)代码:/*******并查集************** *************************/#include#includeint find(in转载 2016-05-23 17:05:15 · 350 阅读 · 0 评论