本科实验报告
课程名称:数据结构B
实验项目:查找
实验地点:行勉楼C214
专业班级:软件XXX班学号:2014XXXX 学生姓名:xxxxx
指导教师:牛之贤张润梁
2016年 1 月 1 日
void insertBST(BiTree *bt, BiTree s) {
if (*bt == NULL) *bt = s;
else if (s->data.key<(*bt)->data.key) insertBST(&((*bt)->lchild), s);
else if (s->data.key>(*bt)->data.key) insertBST(&((*bt)->rchild), s); }
main() {
char ch;
KeyType key;
BiTree bt, s;
int i = 0;
printf("请输入元素:\n");
scanf("%d", &key);
bt = NULL;
while (key != -1) {
s = (BiTree)malloc(sizeof(BiTNode));
(s->data).key = key; s->lchild = s->rchild = NULL;
insertBST(&bt, s);
scanf("%d", &key);
}
do {
printf("输入你想要查找的元素:");
scanf("%d", &key);
s = searchBST(bt, key);
if (s != NULL) printf("成功! 这个等价元素是 %d.\n", s->data.key);
else printf("没有找到!\n");
printf("是否继续查找?(y/n):");
scanf("%c", &ch);
ch = getchar();
} while (ch == 'y' || ch == 'Y');
getchar();
}
4.2#include<stdio.h>
int b_search(int *p, int l, int r, int key);
int main() {
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i, p, k;
for (i = 0; i < 10; i++) {
printf("a[%d]=%d\n", i, a[i]);
}
for (i = 0; i<2; i++) {
printf("请输入想要查找的数字:");
scanf("%d", &k);
p = b_search(a, 0, 6, k);
if (p >= 0)
printf("找到: a[%d]=%d\n", p, k);
else
printf("没有找到此元素: %d\n", k);
}
getchar();
getchar();
return 0;
}
int b_search(int *p, int l, int r, int key) { int f, m;
m = (l + r) / 2;
if (l>r)
f = -1;
else if (p[m] == key)
f = m;
else if (p[m]>key)
f = b_search(p, l, r - 1, key);
else
f = b_search(p, l + 1, r, key);
return f;
}
五、实验数据记录和处理
六、实验结果与分析。