2012-03-06 55 views
-5

这里是我的代码不能明白的地方是错误错误执行桶排序

#include <iostream> 
#include<iomanip> 
using namespace std; 
#define narray 8;// array size; 
#define nbucket 5;// bucket size; 
#define interval 10;// bucket range 
struct node 
{ 
int data; 
struct node *next; 
}; 
void BucketSort(int arr[]); 
struct node *InsertionSort(struct Node *list); 
void print(int arr[]); 
void printBuckets(struct Node *list); 
int getBucketIndex(int value); 
void BucketSort(int arr[]) 
{ 

int i,j; 
struct node **buckets; 
buckets = (struct node **)malloc(sizeof(struct node*) * nbucket); 
for (i=0;i<nbucket;i++){ 
     buckets[i]=NULL; 
} 
for (int i=0;i<narray;i++){ 
    struct node *current; 
    int pos=getBucketIndex(arr[i]); 
    current=(struct node *)malloc(sizeof(struct node)); 
    current->data=arr[i]; 
    current->next=buckets[pos]; 
    buckets[pos]=current; 


} 

} 


int main(){ 





return 0; 
} 

错误很多,例如

Error 1 error C2143: syntax error : missing ')' before ';' c:\documents and settings\student\my documents\visual studio 2008\projects\bucket_sort\bucket_sort\bucket_sort.cpp 22 bucket_sort 
Error 2 error C2059: syntax error : ')' c:\documents and settings\student\my documents\visual studio 2008\projects\bucket_sort\bucket_sort\bucket_sort.cpp 22 bucket_sort 
Error 3 error C2146: syntax error : missing ')' before identifier 'i' c:\documents and settings\student\my documents\visual studio 2008\projects\bucket_sort\bucket_sort\bucket_sort.cpp 23 bucket_sort 
Error 4 error C2059: syntax error : ';' c:\documents and settings\student\my documents\visual studio 2008\projects\bucket_sort\bucket_sort\bucket_sort.cpp 23 bucket_sort 
Error 5 error C2059: syntax error : ')' c:\documents and settings\student\my documents\visual studio 2008\projects\bucket_sort\bucket_sort\bucket_sort.cpp 23 bucket_sort 
Error 6 error C2143: syntax error : missing ';' before '{' c:\documents and settings\student\my documents\visual studio 2008\projects\bucket_sort\bucket_sort\bucket_sort.cpp 23 bucket_sort 
Error 7 error C2146: syntax error : missing ')' before identifier 'i' c:\documents and settings\student\my documents\visual studio 2008\projects\bucket_sort\bucket_sort\bucket_sort.cpp 26 bucket_sort 
Error 8 error C2059: syntax error : ';' c:\documents and settings\student\my documents\visual studio 2008\projects\bucket_sort\bucket_sort\bucket_sort.cpp 26 bucket_sort 
Error 9 error C2059: syntax error : ')' c:\documents and settings\student\my documents\visual studio 2008\projects\bucket_sort\bucket_sort\bucket_sort.cpp 26 bucket_sort 
Error 10 error C2143: syntax error : missing ';' before '{' c:\documents and settings\student\my documents\visual studio 2008\projects\bucket_sort\bucket_sort\bucket_sort.cpp 26 bucket_sort 
+0

遗憾的是,当使用模板时,我没有使用Stackoverflow,当时是15页长的错误。否则,我可能会用编译错误日志卡住网站。 – 2012-03-06 10:58:39

+0

ATLEAST尝试按照调试编译器指令要求帮助 – 2012-03-06 10:59:29

+0

你的问题之前一个额外的评论之前被向下投票被遗忘:这是C++,所以失去了顺差“结构”的关键字。你需要“结构”来声明结构,但之后将它称为“节点”,“节点”,“节点**”而不是“结点节点”,“结点节点**” – RobH 2012-03-06 11:01:02

回答

5

#define nbucket 5;取出;和另一个定义。

目前,列22由预处理程序扩展,成为明显的,无效:

buckets = (struct node **)malloc(sizeof(struct node*) * 5;); 
//              ^^ 
+0

谢谢@亨利克,但是它可以做到没有downvoting认为 – 2012-03-06 10:58:16

+0

@dato - 不是我downvote – Henrik 2012-03-06 10:59:43

+0

此外,完全失去#defines。首选'const int nbucket = 5;' – RobH 2012-03-06 11:02:39

0

#define线是编译器的部分,它是之前的运行pre processor的一部分编译器。预处理器处理的行不应以分号结尾。

就拿这条线:

#define narray 8;// array size; 

这将创建一个宏观命名narray。当预处理器运行时,它将用替换文本替换narray的所有实例,在此例中为8;。正如你所看到的,在表达式中有8;将在不应该有的地方添加分号。