数据结构:查找子系统

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*

*题目:编写循序查找程序

* 编写二分查找程序

* 编写建立二叉排序树的程序

* 编写在二叉排序树上的查找、输入、删除结点的程序* 编写二叉排序树的中序输出的程序

* 设计一个选择式菜单,一级菜单形式如下:

* 查找子系统

* *********************************

* * 1------顺序查找*

* * 2------二分查找*

* * 3------二叉排序树*

* * 0------返回*

* *********************************

* 请选择菜单号(0--3):

* 二叉排序树的二级菜单如下:

* 二叉排序树

* ************************************

* * 1------更新二叉排序树*

* * 2------查找结点*

* * 3------插入结点*

* * 4------删除结点*

* * 5------中序输出排序树*

* * 0------返回*

* ************************************

* 请选择菜单号(0--5):

*/

#include

#include

#include

#define SEARCHMAX 30

typedef struct node

{

int trData; //根节点

struct node *lchild; //左子树

struct node *rchild; //右子树

}BtNode, *pBtNode;

void seqSearch();

void binSearch();

void btSearch();

pBtNode createBT();

void searchBT(pBtNode T, int k);

void insBT(pBtNode *T, int k);

void delBT(pBtNode *T, int k);

void inorderBT(pBtNode T);

void main()

{

int choice, k = 1;

while (k)

{

printf("\n 查找子系统\n");

printf("*********************************\n");

printf("* 1------顺序查找*\n");

printf("* 2------二分查找*\n");

printf("* 3------二叉排序树*\n");

printf("* 0------返回*\n");

printf("*********************************\n");

printf("请选择菜单号(0--3):");

fflush(stdin);

scanf("%d", &choice);

switch(choice)

{

case 1:

seqSearch();

break;

case 2:

binSearch();

break;

case 3:

btSearch();

break;

case 0:

k = 0;

break;

default:

printf("输入错误,请重新输入。");

getchar();

k = 1;

break;

}

}

}

void seqSearch() //顺序查找

{

int a[SEARCHMAX], x, y, i;

char ch;

printf("建立一个整数的顺序表(以-1结束):");

for (i = 0; i

{

scanf("%d", &a[i]);

getchar();

if (a[i] == -1) //记录结束位置,结束循环

{

y = i;

break;

}

}

printf("是否需要查找(Y/N):");

scanf("%c", &ch);

while (ch == 'y'||ch == 'Y')

{

printf("请输入要查找的数据:\n");

scanf("%d", &x);

getchar();

i = 0; //找到数组的结束位置。

while (i < y-1&&a[i] != x) //找到要查找的数据的位置

{

i++;

}

if (i == -1) //没找到

{

printf("对不起,没有找到。\n");

}

else

{

printf("该数据在第%d个位置上。\n", i+1);

}

printf("是否继续查找(Y/N):");

scanf("%c", &ch);

}

}

相关文档
最新文档