Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 执行桶排序时出错_C++_Sorting_Data Structures_Bucket - Fatal编程技术网

C++ 执行桶排序时出错

C++ 执行桶排序时出错,c++,sorting,data-structures,bucket,C++,Sorting,Data Structures,Bucket,这是我的代码,我无法理解错误在哪里 #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 BucketS

这是我的代码,我无法理解错误在哪里

#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;
}

删除
来自
#定义nbucket 5和其他定义

此时,预处理器将第22行扩展为明显无效的:

buckets = (struct node **)malloc(sizeof(struct node*) * 5;);
//                                                      ^^
#define
行不是编译器的一部分,而是在编译器之前运行的一部分。预处理器处理的行不应以分号结尾

以这一行为例:

#define narray 8;// array size;

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

谢谢@Henrik,但这可以在不进行向下投票的情况下完成。此外,完全失去#defines。首选
const int nbucket=5节点
节点*
节点**
,而不是
结构节点*
结构节点**
#define narray 8;// array size;