标题:可以帮我看看吗,二叉排序的,出错了
只看楼主
kappa314
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2004-10-9
 问题点数:0 回复次数:3 
可以帮我看看吗,二叉排序的,出错了

warning C4518: 'int ' : storage-class or type specifier(s) unexpected here; ignored

error C2146: syntax error : missing ';' before identifier 'BinarySearch'

fatal error C1004: unexpected end of file found

对于这样的语句:if (newbase == NULL)

NULL在C++中要定义么,怎么定义????????????

#include <iostream>

#include <stdlib.h>

#include <malloc.h>

using namespace std;

const int increment = 20;

//函数声明

int Compare(int a, int b)

int BinarySearch(int list[], int target, int n)

int InsertNewOne(int list[], int n, int target)

int main()

{

int a[16];

int i;

int location; //目标元素的位置

int Target; //目标元素

a[0] = 0;

//输入Target

cout<<endl<<"Please input the Target:";

cin>>Target;

cout<<endl;

//初始化a[]

for (i=1; i<16; i++)

{

a[i] = 2*i-1;

a[0]++;

}

location = BinarySearch(a, Target, a[0]);

//输出a[]的相关数据

cout<<endl<<"The elements of the list are:"<<endl;//输出A[]的数据

for (i=1; i<16; i++)

cout<<a[i];

cout<<endl<<"The length is:"<<a[0]<<endl;//输出长度

cout<<endl<<"The Target is:"<<Target<<endl;//输出要查找的元素

//输出查找到的元素位置,如果为0,则表明元素不存在

cout<<endl<<"The location is:"<<location<<endl;

if (location == 0)

//如果在Target不在线性表中,则将Target插入到线性表中

location = InsertNewOne (a, a[0], Location, Target);

return 0;

}

//Compare: 比较函数

//a和b为两个待比较元素

int Compare(int a, int b)

{

if (a < b)

return -1;

else

if (a == b)

return 0;

else // a>b

return 1;

}

//BinarySearch:二叉查找

//list:待查找的线性表

//target:目标元素

//n:list的长度

int BinarySearch(int list[], int target, int n)

{

int start=1;

int end=n;

int middle;

while (start <= end)

{

middle = (start + end) / 2;

switch (Compare(list[middle], target))

{

case -1 : start = middle+1;

break; //list[middle]<target

case 0 : return middle;

break; //list[middle]=target

case 1 : end = middle-1;

break; //list[middle]>target

default : break;

}//switch

}//while

return 0;

}//BinarySearch

//InsertNewOne:插入一个新的元素

//list:待插入的元素

//n:list的长度

//target:目标元素

int InsertNewOne(int list[], int n, int target)

{

int i;

int location;

int *newbase;//临时变量,用来存储新分配到的存储单元的地址

//list已满,再申请20个存储空间

if (n == 15)

{

newbase = (int *) realloc (list, (n + increment) * sizeof (int));

if (newbase == NULL)

exit -1;

else

list = newbase;

}

//找到适合的位置i

for (i=1; i<16; i++)

if ((target>list[i]) && (target<list[i+1]))

location = i;

//移动list[i]以后的元素并插入target

for (i=n; i>0; i++)

list[i] = list[i+1];

//完成赋值

list[location] = target;

return 0;

搜索更多相关主题的帖子: Roman Times New 
2004-12-17 18:14
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
得分:0 

int Compare(int a, int b)

int BinarySearch(int list[], int target, int n)

int InsertNewOne(int list[], int n, int target)

";"号没有!!!


差点把你忘了...
2004-12-18 11:06
kappa314
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2004-10-9
得分:0 

还是不对啊?

#include <iostream> #include <stdlib.h> #include <malloc.h> using namespace std;

const int increment = 20;

//函数声明 int Compare(int a, int b); int BinarySearch(int list[], int target, int n); int InsertNewOne(int list[], int n, int target);

int main() { int a[16];

int i;

int location; //目标元素的位置

int Target; //目标元素

a[0] = 0;

//输入Target cout<<endl<<"Please input the Target:"; cin>>Target; cout<<endl;

//初始化a[] for (i=1; i<16; i++) { a[i] = 2*i-1;

a[0]++; }

location = BinarySearch(a, Target, a[0]);

//输出a[]的相关数据 cout<<endl<<"The elements of the list are:"<<endl;//输出A[]的数据 for (i=1; i<16; i++) cout<<a[i]; cout<<endl<<"The length is:"<<a[0]<<endl;//输出长度 cout<<endl<<"The Target is:"<<Target<<endl;//输出要查找的元素

//输出查找到的元素位置,如果为0,则表明元素不存在 cout<<endl<<"The location is:"<<location<<endl; if (location == 0) //如果在Target不在线性表中,则将Target插入到线性表中 location = InsertNewOne (a, a[0], Location, Target);

return 0; }

//Compare: 比较函数 //a和b为两个待比较元素 int Compare(int a, int b) {

if (a < b) return -1; else if (a == b) return 0; else // a>b return 1; }

//BinarySearch:二叉查找 //list:待查找的线性表 //target:目标元素 //n:list的长度 int BinarySearch(int list[], int target, int n) { int start=1; int end=n;

int middle;

while (start <= end) { middle = (start + end) / 2;

switch (Compare(list[middle], target) { case -1 : start = middle+1; break; //list[middle]<target case 0 : return middle; break; //list[middle]=target case 1 : end = middle-1; break; //list[middle]>target default : break; }//switch }//while return 0; }//BinarySearch

//InsertNewOne:插入一个新的元素 //list:待插入的元素 //n:list的长度 //target:目标元素 int InsertNewOne(int list[], int n, int target) { int i;

int location; int *newbase;//临时变量,用来存储新分配到的存储单元的地址 //list已满,再申请20个存储空间 if (n == 15) { newbase = (int *) realloc (list, (n + increment) * sizeof (int)); if (newbase == NULL) exit -1; else list = newbase; }

//找到适合的位置i for (i=1; i<16; i++) if ((target>list[i]) && (target<list[i+1])) location = i;

//移动list[i]以后的元素并插入target for (i=n; i>0; i++) list[i] = list[i+1];

//完成赋值 list[location] = target;

return 0; }//Insert

2004-12-19 10:35
kappa314
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2004-10-9
得分:0 

鬼火,烦~~~~~~

#include <iostream> #include <stdlib.h> #include <malloc.h> using namespace std;

const int increment = 20;

//函数声明 int Compare(int a, int b); int BinarySearch(int list[], int target, int n); int InsertNewOne(int list[], int n, int target);

int main() { int a[16];

int i;

int location; //目标元素的位置

int Target; //目标元素

a[0] = 0;

//输入Target cout<<endl<<"Please input the Target:"; cin>>Target; cout<<endl;

//初始化a[] for (i=1; i<16; i++) { a[i] = 2*i-1;

a[0]++; }

location = BinarySearch(a, Target, a[0]);

//输出a[]的相关数据 cout<<endl<<"The elements of the list are:"<<endl;//输出A[]的数据 for (i=1; i<16; i++) cout<<a[i]; cout<<endl<<"The length is:"<<a[0]<<endl;//输出长度 cout<<endl<<"The Target is:"<<Target<<endl;//输出要查找的元素

//输出查找到的元素位置,如果为0,则表明元素不存在 cout<<endl<<"The location is:"<<location<<endl; if (location == 0) //如果在Target不在线性表中,则将Target插入到线性表中 location = InsertNewOne (a, a[0], Target);

return 0; }

//Compare: 比较函数 //a和b为两个待比较元素 int Compare(int a, int b) {

if (a < b) return -1; else if (a == b) return 0; else // a>b return 1; }

//BinarySearch:二叉查找 //list:待查找的线性表 //target:目标元素 //n:list的长度 int BinarySearch(int list[], int target, int n) { int start=1; int end=n;

int middle;

while (start <= end) { middle = (start + end) / 2;

switch (Compare(list[middle], target) { case -1 : start = middle+1; break; //list[middle]<target case 0 : return middle; break; //list[middle]=target case 1 : end = middle-1; break; //list[middle]>target default : break; }//switch }//while return 0; }//BinarySearch

//InsertNewOne:插入一个新的元素 //list:待插入的元素 //n:list的长度 //target:目标元素 int InsertNewOne(int list[], int n, int target) { int i;

int location; int *newbase;//临时变量,用来存储新分配到的存储单元的地址 //list已满,再申请20个存储空间 if (n == 15) { newbase = (int *) realloc (list, (n + increment) * sizeof (int)); if (newbase == NULL) exit -1; else list = newbase; }

//找到适合的位置i for (i=1; i<16; i++) if ((target>list[i]) && (target<list[i+1])) location = i;

//移动list[i]以后的元素并插入target for (i=n; i>0; i++) list[i] = list[i+1];

//完成赋值 list[location] = target;

return 0; }//Insert

2004-12-19 10:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-9543-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.057063 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved