#include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; typedef struct { int key; //关键字域 }Elemtype; typedef struct { Elemtype R[1000]; int length; }SSTable; int Search_Seq(SSTable ST, int key) { int i; ST.R[0].key = key; for (i = ST.length; ST.R[i].key != key; --i); //从后往前找 return i; } int Search_Bin(SSTable ST, int Key) {//在有序表ST中折半查找其关键字等于key的数据元素。若能找到,则函数值为该元素在表中的位置,否则为0 int low, high,mid;//,length; low = 1; high = ST.length; /*high = ST, length;*/ printf("HELLO"); while (low <= high) { printf("HELLO"); mid = (low + high) / 2; if (Key == ST.R[mid].key) return mid; else if (Key < ST.R[mid].key) high = mid - 1; else low = mid + 1; printf("HELLO"); } //while return 0; } int main() { int n,i,Key; SSTable ST; cout<<"请选择确定需要存入表中的元素个数:\n"; cin >> n; ST.length = n; for (i = 1; i <= n; i++) { cin >> ST.R[i].key; } cout << "请输入Key:"; cin >> Key; printf("顺序查找结果:%d", Search_Seq(ST, Key)); printf("中序查找结果:%d",Search_Bin(ST,Key)); /*cout << "顺序查找,在此顺序表下标为" << Search_Seq(ST, Key) << "处的元素内找到与key相同的元素\n"; cout << "中序查找,在此顺序表下标为" << Search_Bin(ST, Key) << "处的元素内找到与Key相同的元素\n";*/ return 0; }我的代码有些问题,可以帮我找出来并修改吗?
时间: 2024-03-16 13:42:21 浏览: 102
你的代码中存在一些问题:
1. 头文件的引入应该放在最开头,而不是在中间。
2. 使用了命名空间std,因此不应该再用printf,应该使用cout进行输出。
3. 在Search_Bin函数中,使用了printf输出,而不是cout输出。
4. 在Search_Bin函数中,可能会出现死循环的问题。当Key不在有序表ST中时,while循环会一直执行,导致程序卡住。应该添加一个判断条件,当low>high时,说明Key不在ST中,直接返回0。
5. 在主函数中,使用了两次printf输出,没有换行符,应该在末尾添加换行符。
下面是修改后的代码:
```cpp
#include <iostream>
using namespace std;
typedef struct {
int key; //关键字域
} Elemtype;
typedef struct {
Elemtype R[1000];
int length;
} SSTable;
int Search_Seq(SSTable ST, int key) {
int i;
ST.R[0].key = key;
for (i = ST.length; ST.R[i].key != key; --i); //从后往前找
return i;
}
int Search_Bin(SSTable ST, int Key) {
int low, high, mid;
low = 1;
high = ST.length;
while (low <= high) {
mid = (low + high) / 2;
if (Key == ST.R[mid].key) return mid;
else if (Key < ST.R[mid].key) high = mid - 1;
else low = mid + 1;
}
return 0;
}
int main() {
int n, i, Key;
SSTable ST;
cout << "请选择确定需要存入表中的元素个数:" << endl;
cin >> n;
ST.length = n;
for (i = 1; i <= n; i++) {
cin >> ST.R[i].key;
}
cout << "请输入Key:";
cin >> Key;
cout << "顺序查找,在此顺序表下标为" << Search_Seq(ST, Key) << "处的元素内找到与key相同的元素" << endl;
cout << "中序查找,在此顺序表下标为" << Search_Bin(ST, Key) << "处的元素内找到与Key相同的元素" << endl;
return 0;
}
```
希望能帮到你!
阅读全文