1,KMP算法

数据结构复习笔记(5)_中序遍历void preKmp(char *x, int m, int kmpNext[])
数据结构复习笔记(5)_二叉排序树_02数据结构复习笔记(5)_i++_03 
数据结构复习笔记(5)_i++_04{
数据结构复习笔记(5)_中序遍历_05
数据结构复习笔记(5)_中序遍历_05   
int i, j;
数据结构复习笔记(5)_中序遍历_05   i 
= 0;
数据结构复习笔记(5)_中序遍历_05   j 
= kmpNext[0= -1;
数据结构复习笔记(5)_中序遍历_05
数据结构复习笔记(5)_中序遍历_10数据结构复习笔记(5)_#include_11   
while (i < m) 数据结构复习笔记(5)_i++_04{
数据结构复习笔记(5)_中序遍历_05      
while (j > -1 && x[i] != x[j])
数据结构复习笔记(5)_中序遍历_05         j 
= kmpNext[j];
数据结构复习笔记(5)_中序遍历_05      i
++;
数据结构复习笔记(5)_中序遍历_05      j
++;
数据结构复习笔记(5)_中序遍历_05      
if (x[i] == x[j])
数据结构复习笔记(5)_中序遍历_05         kmpNext[i] 
= kmpNext[j];
数据结构复习笔记(5)_中序遍历_05      
else
数据结构复习笔记(5)_中序遍历_05         kmpNext[i] 
= j;
数据结构复习笔记(5)_结点_21   }

数据结构复习笔记(5)_中序遍历_22}

数据结构复习笔记(5)_中序遍历
数据结构复习笔记(5)_中序遍历
数据结构复习笔记(5)_中序遍历
void KMP(char *x, int m, char *y, int n) 
数据结构复习笔记(5)_二叉排序树_02数据结构复习笔记(5)_i++_03
数据结构复习笔记(5)_i++_04{//x为模式串,m为其长度,y为主串,n为其长度
数据结构复习笔记(5)_中序遍历_05

数据结构复习笔记(5)_中序遍历_05   
int i, j, kmpNext[MAXSIZE];//kmpNext数组存放next函数值
数据结构复习笔记(5)_中序遍历_05

数据结构复习笔记(5)_中序遍历_10数据结构复习笔记(5)_#include_11   
/**//* Preprocessing */
数据结构复习笔记(5)_中序遍历_05   preKmp(x, m, kmpNext);
数据结构复习笔记(5)_中序遍历_05
数据结构复习笔记(5)_中序遍历_10数据结构复习笔记(5)_#include_11   
/**//* Searching */
数据结构复习笔记(5)_中序遍历_05   i 
= j = 0;
数据结构复习笔记(5)_中序遍历_10数据结构复习笔记(5)_#include_11   
while (j < n) 数据结构复习笔记(5)_i++_04{
数据结构复习笔记(5)_中序遍历_05      
while (i > -1 && x[i] != y[j])
数据结构复习笔记(5)_中序遍历_05         i 
= kmpNext[i];
数据结构复习笔记(5)_中序遍历_05      i
++;
数据结构复习笔记(5)_中序遍历_05      j
++;
数据结构复习笔记(5)_中序遍历_10数据结构复习笔记(5)_#include_11      
if (i >= m) 数据结构复习笔记(5)_i++_04{
数据结构复习笔记(5)_中序遍历_05         OUTPUT(j 
- i);
数据结构复习笔记(5)_中序遍历_05         i 
= kmpNext[i];
数据结构复习笔记(5)_结点_21      }

数据结构复习笔记(5)_结点_21   }

数据结构复习笔记(5)_中序遍历_22}

数据结构复习笔记(5)_中序遍历

2二叉排序树的建立及查找算法

数据结构复习笔记(5)_中序遍历#include <stdlib.h>
数据结构复习笔记(5)_中序遍历#include 
<stdio.h>
数据结构复习笔记(5)_中序遍历
#define NULL 0
数据结构复习笔记(5)_中序遍历typedef 
int KeyType;
数据结构复习笔记(5)_中序遍历typedef 
struct
数据结构复习笔记(5)_二叉排序树_02数据结构复习笔记(5)_i++_03
数据结构复习笔记(5)_i++_04{
数据结构复习笔记(5)_中序遍历_05    KeyType key;
数据结构复习笔记(5)_中序遍历_22}
ElemType;   //元素类型
数据结构复习笔记(5)_中序遍历
typedef struct BiTNode
数据结构复习笔记(5)_二叉排序树_02数据结构复习笔记(5)_i++_03
数据结构复习笔记(5)_i++_04{
数据结构复习笔记(5)_中序遍历_05 ElemType data;
数据结构复习笔记(5)_中序遍历_05    
struct BiTNode *lchild,*rchild;
数据结构复习笔记(5)_中序遍历_22}
BiTNode,*BiTree;
数据结构复习笔记(5)_中序遍历BiTree find(BiTree root,KeyType key)
数据结构复习笔记(5)_二叉排序树_02数据结构复习笔记(5)_i++_03
数据结构复习笔记(5)_i++_04{  //在二叉排序树中查找其关键字等于给定值的结点是否存在,并输出相应信息
数据结构复习笔记(5)_中序遍历_05
BiTNode *p;
数据结构复习笔记(5)_中序遍历_05 p
=root;
数据结构复习笔记(5)_中序遍历_05 
if (p==NULL) return NULL;
数据结构复习笔记(5)_中序遍历_05    
else if (p->data.key==key) return p;
数据结构复习笔记(5)_中序遍历_05    
else if (key<p->data.key) return find(p->lchild,key);
数据结构复习笔记(5)_中序遍历_05    
else return find(p->rchild,key);
数据结构复习笔记(5)_中序遍历_22}

数据结构复习笔记(5)_二叉排序树_02数据结构复习笔记(5)_i++_03
void Insert(BiTree *p,BiTree t)数据结构复习笔记(5)_i++_04{               //在二叉排序树中插入一个新结点
数据结构复习笔记(5)_中序遍历_05
 if (*p==NULL) *p=t;
数据结构复习笔记(5)_中序遍历_05    
else if(t->data.key<(*p)->data.key) Insert(&((*p)->lchild),t);
数据结构复习笔记(5)_中序遍历_05    
else if(t->data.key>(*p)->data.key) Insert(&((*p)->rchild),t);
数据结构复习笔记(5)_中序遍历_22}

数据结构复习笔记(5)_二叉排序树_02数据结构复习笔记(5)_i++_03
void inorder(BiTree p)数据结构复习笔记(5)_i++_04{  //中序遍历所建二叉排序树,将得到一个按关键字有序的元素序列
数据结构复习笔记(5)_中序遍历_10数据结构复习笔记(5)_#include_11
 if(p!=NULL)数据结构复习笔记(5)_i++_04{
数据结构复习笔记(5)_中序遍历_05 inorder(p
->lchild);
数据结构复习笔记(5)_中序遍历_05 printf(
"%5d",(p->data).key);
数据结构复习笔记(5)_中序遍历_05 inorder(p
->rchild);
数据结构复习笔记(5)_结点_21 }

数据结构复习笔记(5)_中序遍历_22}

数据结构复习笔记(5)_二叉排序树_02数据结构复习笔记(5)_i++_03
void main()数据结构复习笔记(5)_i++_04{
数据结构复习笔记(5)_中序遍历_05 
char ch;
数据结构复习笔记(5)_中序遍历_05 KeyType key;
数据结构复习笔记(5)_中序遍历_05 BiTree p,s;
数据结构复习笔记(5)_中序遍历_05 
int i=0;
数据结构复习笔记(5)_中序遍历_05 printf(
"Please input datas (9999:end):\n");//建立一棵二叉排序树,元素值从键盘输入,直到输入关键字等于9999为止
数据结构复习笔记(5)_中序遍历_05
 scanf("%4d",&key);
数据结构复习笔记(5)_中序遍历_05 p
=NULL;
数据结构复习笔记(5)_中序遍历_10数据结构复习笔记(5)_#include_11 
while(key!=9999)数据结构复习笔记(5)_i++_04{    
数据结构复习笔记(5)_中序遍历_05  s
=(BiTree)malloc(sizeof(BiTNode));
数据结构复习笔记(5)_中序遍历_05  (s
->data).key=key;
数据结构复习笔记(5)_中序遍历_05  s
->lchild=s->rchild=NULL;
数据结构复习笔记(5)_中序遍历_05  Insert(
&p,s);
数据结构复习笔记(5)_中序遍历_05  scanf(
"%d",&key);
数据结构复习笔记(5)_结点_21 }

数据结构复习笔记(5)_中序遍历_05 printf(
"Create is completed\n");
数据结构复习笔记(5)_中序遍历_05 inorder(p);   
//中序遍历已建立的二叉排序树
数据结构复习笔记(5)_中序遍历_05
 printf("\n");
数据结构复习笔记(5)_中序遍历_10数据结构复习笔记(5)_#include_11 
do数据结构复习笔记(5)_i++_04{    //二叉排序树的查找,可多次查找,并输出查找的结果
数据结构复习笔记(5)_中序遍历_05
 printf("Input the key you want to search:");
数据结构复习笔记(5)_中序遍历_05 scanf(
"%4d",&key);
数据结构复习笔记(5)_中序遍历_05 s
=find(p,key);
数据结构复习笔记(5)_中序遍历_05 
if (s!=NULL) printf("success,the value is %4d ",s->data.key);
数据结构复习笔记(5)_中序遍历_05 
else         printf("unsuccess");
数据结构复习笔记(5)_中序遍历_05 printf(
"\ncontinue?y:n\n");getchar();
数据结构复习笔记(5)_中序遍历_05 ch
=getchar();
数据结构复习笔记(5)_结点_21 }
while(ch=='y'||ch=='Y');
数据结构复习笔记(5)_中序遍历_22 }

数据结构复习笔记(5)_中序遍历
数据结构复习笔记(5)_中序遍历