字符串常用方法


操作字符串的常用方法push_back()函数原型:void push_back(char c);作用:在字符串末尾添加一个字符 c。示例:string str = "hello";str.push_back('!');// str 现在为 "hello

串的模式匹配算法.md


算法目的​确定主串中所含子串(模式串)第一次出现的位置(定位)算法应用搜索引擎、拼写检查、语言翻译、数据压缩算法种类BF算法(Brute-Force,又称古典的、经典的、朴素的、穷举的)KMP算法(特点:速度快)BF算法Brute-Force简称为BF算法,亦称简单匹配算法。采用穷举法的思路将主串的

顺序栈的重要算法


栈的抽象数据类型的定义ADT Stack{ 数据对象: D={ai|ai∈ElemSet,i=1,2,.....,n,n≥0} 数据关系: R1 ={<ai-1,ai> |ai-1,ai∈D,i=2,...n 约定an端为栈顶

链栈


链栈的表示typedef struct StackNodef{ SElemType data; struct StackNode *next;}StackNode,*LinkStack;LinkStack S;注意:链表的头指针就是栈顶不需要头结点基本不存在栈满的情况空栈相当于头指针指向

线性表


顺序表基本操作的实现1.1 线性表L的初始化Status InitList_ Sq(SqList &L){ //构造一个空的顺序表LL.elem=new ElemType[MAXSIZE]; //为顺序表分配空间if(!L.elem)exit(OVERFLOW);

线性表的应用


线性表的应用线性表的合并问题描述​假设利用两个线性表La和Lb分别表示两个集合A和B,现要求一个新的集合A = A U B​ $$La=(7,5,3,11)$$ $$Lb=(2,6,3)$$ --------- > $$La=(7,5,3,11,2,6)$$算法步骤​依次取

栈和递归


递归问题——用分治法求解分治法:对于一个较为复杂的问题,能够分解成几个相对简单的且解法相同或类似的子问题来求解必备的三个条件能将一个问题转变成一个新问题,而新问题与原问题的解法相同或类同,不同的仅是处理的对象,且这些处理对象是变化有规律的可以通过上述转化而使问题简化必须有一个明确的递归出口,或称递归

循环队列的操作


循环队列的操作——队列的初始化Status InitQueue (SqQueue &Q){ Q.base =new QElemType[MAXQSIZE]//分配数组空间 //Q.base =(QElemType*) //malloc(MAXQSIZE*si

循环队列


队列的表示和操作的实现队列是仅在表尾进行插入操作,在表头进行删除操作的线性表。表尾即$a_n$端,称为队尾;表头即$a_1$端,称为队头。它是一种先进先出(FIFO)的线性表。插入元素称为入队;删除元素称为出队。队列的存储结构为链队或顺序队(常用循环顺序队)。队列的抽象数据类型定义ADT Queue

双向链表的插入和删除


双向链表的插入 void ListInsert_DuL(DuLinkList &L,Int i,ElemType e){//在带头结点的双向循环链表L中第ⅰ个位置之前插入元素eif(!(p=GetElemP_DuL(L,i)))return ERROR;s=new DuLNode; s-&g