![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 75
a81895898
这个作者很懒,什么都没留下…
展开
-
数据结构题集(严蔚敏)1.17求k阶斐波那契序列的第n项值的函数算法
已知k阶斐波那契序列的定义为f(0)=0,f(1)=0,...f(k-2)=0,f(k-1)=1;f(n)=f(n-1)+f(n-2)+...+f(n-k),n=k,k+1,...试编写求k阶斐波那契序列的第n项值的函数算法,k和n均以值调用的形式在函数参数表中出现。代码如下:int fibonacci(int k,int n){ int *p,x,i,j; if(k原创 2011-11-04 20:41:45 · 4023 阅读 · 0 评论 -
红黑树
红黑树:enum nodecolor {red,black};struct red_black_node{ int key; red_black_node *left; red_black_node *right; red_black_node *p; nodecolor color; red_black_node(int a,nodec原创 2012-02-21 17:11:35 · 1259 阅读 · 0 评论 -
数据结构的扩张
顺序统计树:enum nodecolor {red,black};struct os_node{ int key; os_node *left; os_node *right; os_node *p; nodecolor color; int size; os_node(int a,nodecolor c=red,int s=1)原创 2012-02-21 17:14:01 · 451 阅读 · 0 评论 -
KMP算法中nextval的计算方法!
寒风情 的 KMP算法中nextval的计算方法!KMP算法即Knuth-Morris-Pratt算法,是模式匹配的一种改进算法,因为是名字中三人同时发现的,所以称为KMP算法。因为偶然接触到有关KMP的问题,所以上网查了一下next数组和nextval数组的求法,却没有找到,只有在CSDN的资料文件里找到了next数组的简单求法(根据书上提供的程序也可以求到,但一般在课堂讲解的时候,学生原创 2011-11-14 09:46:35 · 9159 阅读 · 3 评论 -
KMP算法详解
如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。 我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回 答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的MM:“假如你原创 2011-11-13 21:44:32 · 413 阅读 · 0 评论 -
逆波兰表达式
逆波兰表达式:后缀表达式波兰表达式:前缀表达式计算后缀表达式:当遇到一个数时就把它压入栈中,在遇到一个操作符时就将该操作符作用于该栈弹出的两个数上,并将结果压入栈中。#includedouble evalPostFix( ){ stack s; string token; double a, b, result; cin>> token; while (t原创 2011-11-10 11:31:58 · 686 阅读 · 0 评论 -
括号匹配
#includebool ismatch(char* expr){ stack s; int length=strlen(expr); for(int i=0;i<length;++i) { if(expr[i]=='(' || expr[i]=='[' || expr[i]=='{') s.push(expr[i]); if(expr[i]==')') { i原创 2011-11-09 22:06:17 · 527 阅读 · 0 评论 -
汉诺塔
汉诺塔(Towers of Hanoi)问题来自一个古老的传说:在世界刚被创建的时候有一座钻石宝塔(塔1),其上有6 4个金碟(如图5 - 4所示)。所有碟子按从大到小的次序从塔底堆放至塔顶。紧挨着这座塔有另外两个钻石宝塔(塔2和塔3)。从世界创始之日起,婆罗门的牧师们就一直在试图把塔1上的碟子移动到塔2上去,其间借助于塔3的帮助。由于碟子非常重,因此,每次只能移动一个碟子。另外,任何时候都不能把原创 2011-11-09 16:13:09 · 1787 阅读 · 0 评论 -
数据结构题集(严蔚敏)2.39 稀疏多项式
数据结构 稀疏多项式:各项的最高次幂相差很大,很稀疏的意思。struct PolyTerm{ int coef; int exp;};struct SqPoly{ PolyTerm *data; int last;};float GetValue_SqPoly(SqPoly P,int x0)//求升幂顺序存储的稀疏多项式的值 { float exx=1.0,su原创 2011-11-06 20:53:26 · 2166 阅读 · 2 评论 -
单链表
在单链表中设置头结点的作用是插入和删除首元结点时不用进行特殊处理。带头结点的单链表逆序:templateLNode* Oppose(LNode* L){ LNode* p=L; L->next=NULL; p=p->next; LNode* prev; while(p) { prev=p; p=p->next; prev->next=L-原创 2011-11-04 21:16:07 · 466 阅读 · 0 评论 -
数据结构题集(严蔚敏)2.37 改造带头结点的双循环链表
设以带头结点的双向循环链表表示的线性表L=a1,a2,a3...an。试写一时间复杂度O(n)的算法,将L改造为L=a1,a3,...an,...a4,a2。void Reform(DuLinkedList &L)//按1,3,5,...4,2 的顺序重排双向循环链表 L中的所有结点 { p=L.next; while(p->next!=L&&p->next->next!=L原创 2011-11-06 20:19:37 · 3657 阅读 · 2 评论 -
判断单链表是否有环 判断两个链表是否相交
链表球环路的问题经常出现在面试题中,希望通过下面的解释能偶掌握这几个问题。问题:1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如何算环的长度?3、如果链表为存在环,如何算柄的长度?第一问是否有环就用快慢指针,fast=fast->next-next,slow=slow->next;代码如下[cpp] view plainc转载 2012-02-19 18:35:41 · 1080 阅读 · 0 评论