bucket排序的实现中出错
error in implementation of bucket sort
这是我的代码,无法理解错误在哪里
#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 settingsstudentmy documentsvisual studio 2008projectsbucket_sortbucket_sortbucket_sort.cpp 22 bucket_sort
Error 2 error C2059: syntax error : ')' c:documents and settingsstudentmy documentsvisual studio 2008projectsbucket_sortbucket_sortbucket_sort.cpp 22 bucket_sort
Error 3 error C2146: syntax error : missing ')' before identifier 'i' c:documents and settingsstudentmy documentsvisual studio 2008projectsbucket_sortbucket_sortbucket_sort.cpp 23 bucket_sort
Error 4 error C2059: syntax error : ';' c:documents and settingsstudentmy documentsvisual studio 2008projectsbucket_sortbucket_sortbucket_sort.cpp 23 bucket_sort
Error 5 error C2059: syntax error : ')' c:documents and settingsstudentmy documentsvisual studio 2008projectsbucket_sortbucket_sortbucket_sort.cpp 23 bucket_sort
Error 6 error C2143: syntax error : missing ';' before '{' c:documents and settingsstudentmy documentsvisual studio 2008projectsbucket_sortbucket_sortbucket_sort.cpp 23 bucket_sort
Error 7 error C2146: syntax error : missing ')' before identifier 'i' c:documents and settingsstudentmy documentsvisual studio 2008projectsbucket_sortbucket_sortbucket_sort.cpp 26 bucket_sort
Error 8 error C2059: syntax error : ';' c:documents and settingsstudentmy documentsvisual studio 2008projectsbucket_sortbucket_sortbucket_sort.cpp 26 bucket_sort
Error 9 error C2059: syntax error : ')' c:documents and settingsstudentmy documentsvisual studio 2008projectsbucket_sortbucket_sortbucket_sort.cpp 26 bucket_sort
Error 10 error C2143: syntax error : missing ';' before '{' c:documents and settingsstudentmy documentsvisual studio 2008projectsbucket_sortbucket_sortbucket_sort.cpp 26 bucket_sort
从#define nbucket 5;
和其他定义中删除;
。
此时,第22行被预处理器扩展为明显无效的:
buckets = (struct node **)malloc(sizeof(struct node*) * 5;);
// ^^
#define
行不是编译器的部分,而是在编译器之前运行的预处理器的一部分。预处理器处理的行不应以分号结尾。
以这行为例:
#define narray 8;// array size;
这将创建一个名为narray
的宏。当预处理器运行时,它用替换文本替换narray
的所有实例,在本例中为8;
。正如您所看到的,在表达式中包含8;
将在不应该有分号的地方添加分号。
相关文章:
- C++迭代器:实现迭代器类时出错
- 使用链表实现堆栈时出错
- 包含适当的标头时,实现文件中的多个定义出错
- 使用std::set实现稀疏三维网格时出错
- 实现重载运算符'<<'时出错 - C++
- 在C++中检查队列实现时出错
- 在C++中实现双链表时出错
- 链表实现中出错
- 实现智能指针类时出错
- 实现提升函数指针时出错LNK2005
- 在 OpenCV 中实现 DCT 时出错
- 在C++中实现选择排序时出错
- 使用 C++ 实现凯撒密码时出错
- 实现派生类构造函数时出错:"重载函数的任何实例都与指定的类型匹配
- 尝试实现运算符时出错<<?
- C++实现邻接列表时出错
- 运行列表的实现时出错
- bucket排序的实现中出错
- C++中Mergesort实现出错
- 实现"Singleton"模式时出错