08 2012 档案

找出所有和模式串匹配的字符串的起始下标
摘要:/*找出所有和模式串匹配的字符串的起始下标*/#include <iostream>using namespace std;void getNext(char *p,int *next){ int j,k; next[0]=-1; j=0; k=-1; while(j<strlen(p)-1) { if(k==-1||p[j]==p[k]) //匹配的情况下,p[j]==p[k] { j++; k++; next[j]=k; } e... 阅读全文

posted @ 2012-08-27 10:00 为梦飞翔 阅读(482) 评论(0) 推荐(0)

KMP算法next数组的求法
摘要:按照递推的思想: 根据定义next[0]=-1,假设next[j]=k, 即P[0...k-1]==P[j-k,j-1] 1)若P[j]==P[k],则有P[0..k]==P[j-k+1,j],很显然,next[j+1]=next[j]+1=k+1; 2)若P[j]!=P[k],则可以把其看做模式匹配的问题,即匹配失败的时候,k值如何移动,显然k=next[k]。void getNext(char *p,int *next){ next[0]=-1; next[1]=0; for (int i=2;i<strlen(p);i++) { int j=i-1;... 阅读全文

posted @ 2012-08-26 21:40 为梦飞翔 阅读(1346) 评论(0) 推荐(0)

汉诺塔递归和非递归算法实现
摘要:/*汉诺塔递归和非递归算法实现*/#include <iostream>using namespace std;void fun(int N,char a,char b,char c)//递归算法{ if (N==1) { cout<<a<<"-->"<<c<<endl; return; } fun(N-1,a,c,b); cout<<a<<"-->"<<c<<endl; fun(N-1,b,a,c);}void main(){ fun 阅读全文

posted @ 2012-08-25 20:07 为梦飞翔 阅读(4413) 评论(0) 推荐(0)

用队列生成杨辉三角
摘要:/*用队列生成杨辉三角*/#include <iostream>using namespace std;typedef struct Node{ int element; Node* pNext;}Node,*LinkList;typedef struct { LinkList head; LinkList tail;}Queue;void InitQueue(Queue& queue){ queue.head=(LinkList)malloc(sizeof(Node)); queue.head->pNext=NULL; queue.tail=que... 阅读全文

posted @ 2012-08-24 22:31 为梦飞翔 阅读(705) 评论(0) 推荐(0)

队列的链表表示
摘要:/*用链表生成队列,队列是特殊的链表,这允许在尾部插入,队头删除*/#include <iostream>using namespace std;typedef struct Node{ int element; Node* pNext;}Node,*LinkList;typedef struct { LinkList head; LinkList tail;}Queue;void InitQueue(Queue& queue){ queue.head=(LinkList)malloc(sizeof(Node)); queue.head->pNext=NU... 阅读全文

posted @ 2012-08-24 20:42 为梦飞翔 阅读(633) 评论(0) 推荐(0)

链表A和B的有序合并,合并过程不产生新的节点,合并后B消失
摘要:/*有序链表的合并,合并过程不产生新的节点,如A和B合并,合并和B在A中,B消失*/#include <iostream>using namespace std;typedef struct Node { int element; Node *pNext;}Node,*LinkList;void InitList(LinkList& head){ head=(LinkList)malloc(sizeof(Node)); head->pNext=NULL;}int ListLength(LinkList head){ int length=-1; LinkLi... 阅读全文

posted @ 2012-08-24 13:26 为梦飞翔 阅读(428) 评论(0) 推荐(0)

线性集合A-线性集合B
摘要:需要注意的地方:删除一个元素后,下一次遍历的下标值不变,另外程序使用了动态线性表,在插入操作时可以扩容,使用p=realloc(p,size)#include <iostream>using namespace std;typedef struct { int *p; int length; int size;}sqListEx;void initList(sqListEx& sqlist,int m){ sqlist.p=(int *)malloc(m*sizeof(int)); sqlist.length=0; sqlist.size=m;}void ... 阅读全文

posted @ 2012-08-23 10:41 为梦飞翔 阅读(302) 评论(0) 推荐(0)

导航