查找的基本操作
1 一、 实验代码二、#include 三、#include 四、#include 五、#include 六、typedef struct node 七、 八、int data; 九、struct node *lchild; 十、struct node *rchild; 十一、BinaryTree; 十二、void InitateRandomNumber();/ 初始化随机数十三、void CreatBinarySortTree(BinaryTree */创建二叉排序树十四、void ShellSort();/shell排序 , 用于对生成的随机数进行排序十五、void DisplayRandomNumber();/ 显示随机数十六、void InOrderTraverse(BinaryTree *ptrBinaryTree);/二叉树中序遍历十七、void SequentialSearch();/ 顺序查找十八、void BinarySearch();/ 二分查找十九、void Bound(char ch, int num); 二十、int randomNumber100;/ 随机数组二十一、BinaryTree *root;/ 二叉排序树根结点二十二、int main() 二十三、 二十四、char choice; 二十五、InitateRandomNumber(); 二十六、CreatBinarySortTree(root, randomNumber); 二十七、ShellSort(); 二十八、while (true) 二十九、 三十、system(“CLS“); 三十一、printf(“ 查找操作 n“); 三十二、Bound('-', 14); 三十三、printf(“ 1. 分块查找 n“); 三十四、printf(“ 2. 二分查找 n“); 三十五、printf(“ 0. 退出程序 n“); 三十六、Bound('-', 14); 三十七、printf(“n 请选择 : “); 三十八、fflush(stdin); 三十九、choice = getchar(); 四十、switch (choice) 四十一、 四十二、case '1': 四十三、SequentialSearch(); 2 四十四、break; 四十五、case '2': 四十六、BinarySearch(); 四十七、break; 四十八、case '0': 四十九、printf(“n“); 五十、system(“PAUSE“); 五十一、return 0; 五十二、break; 五十三、default: 五十四、printf(“n 您的输入有误, 按任意键后重新输入!“); 五十五、getch(); 五十六、break; 五十七、 五十八、 五十九、 六十、void InitateRandomNumber()/ 初始化随机数六十一、 六十二、int cnt; 六十三、srand(unsigned int)time(NULL); 六十四、randomNumber0 = 300; 六十五、for (cnt=1; cntdata = randomNumbercnt; 八十四、ptr->lchild = NULL; 八十五、ptr->rchild = NULL; 八十六、if (cnt = 0) 八十七、 3 八十八、root = ptr; 八十九、 九十、else 九十一、 九十二、temp = root; 九十三、Flag_0: if (temp->data > ptr->data) 九十四、 九十五、goto Flag_1; 九十六、 九十七、else 九十八、 九十九、goto Flag_2; 百、 百一、Flag_1: if (temp->lchild = NULL) 百二、 百三、temp->lchild = ptr; 百四、continue; 百五、 百六、else 百七、 百八、temp = temp->lchild; 百九、goto Flag_0; 百十、 百十一、Flag_2: if (temp->rchild = NULL) 百十二、 百十三、temp->rchild = ptr; 百十四、continue; 百十五、 百十六、else 百十七、 百十八、temp = temp->rchild; 百十九、goto Flag_0; 百二十、 百二十一、 百二十二、 百二十三、 百二十四、void ShellSort()/shell排序 , 用于对生成的随机数进行排序百二十五、 百二十六、int frontCnt, rearCnt, range; 百二十七、int tempNumber; 百二十八、range = 100 / 2; 百二十九、while (range > 0) 百三十、 百三十一、for (rearCnt=range; rearCnt= 0) 百三十六、 百三十七、if (randomNumberfrontCnt > randomNumberfrontCnt+range) 百三十八、 百三十九、tempNumber = randomNumberfrontCnt; 百四十、randomNumberfrontCnt = randomNumberfrontCnt+range; 百四十一、randomNumberfrontCnt+range = tempNumber; 百四十二、 百四十三、else 百四十四、 百四十五、frontCnt -= 1; 百四十六、 百四十七、 百四十八、 百四十九、range /= 2; 百五十、 百五十一、 百五十二、void DisplayRandomNumber()/ 显示随机数百五十三、 百五十四、for (int cnt=0; cnt randomNumbermidIndex) 二百九、 二百十、lowIndex = midIndex + 1; 二百十一、 二百十二、else 二百十三、 二百十四、highIndex = midIndex - 1; 二百十五、 二百十六、+searchCnt; 二百十七、 6 二百十八、if (lowIndex > highIndex) 二百十九、 二百二十、printf(“ 没有查找到此数!nn“); 二百二十一、 二百二十二、二百二十三、printf(“ 按任意键结束!“); 二百二十四、getch(); 二百二十五、 二百二十六、void InOrderTraverse(BinaryTree *ptrBinaryTree)/二叉树中序遍历二百二十七、 二百二十八、if (ptrBinaryTree->lchild) != NULL) 二百二十九、 二百三十、InOrderTraverse(ptrBinaryTree->lchild); 二百三十一、 二百三十二、if (ptrBinaryTree != NULL) 二百三十三、 二百三十四、printf(“ %d“, ptrBinaryTree->data); 二百三十五、 二百三十六、if (ptrBinaryTree->rchild) != NULL) 二百三十七、 二百三十八、InOrderTraverse(ptrBinaryTree->rchild); 二百三十九、 二百四十、 二百四十一、void Bound(char ch, int num) 二百四十二、 二百四十三、while (num-) 二百四十四、 二百四十五、putchar(ch); 二百四十六、 二百四十七、putchar('n'); 二百四十八、