【问题标题】:error in implementation of bucket sort桶排序实现中的错误
【发布时间】:2012-03-06 10:53:52
【问题描述】:

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

#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

【问题讨论】:

  • 很遗憾我没有使用 Stackoverflow,当时是使用模板时出现 15 页长错误的时候。否则我可能会用编译错误日志卡住网站。
  • 在寻求帮助之前至少尝试按照编译器指令进行调试
  • 在您的问题被否决之前,还有一条额外的评论:这是 C++,所以请去掉多余的“struct”关键字。您需要“struct”来声明结构,但之后将其称为nodenode*node** 而不是struct node*struct node**

标签: c++ sorting data-structures bucket


【解决方案1】:

#define nbucket 5; 和其他定义中删除;

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

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

【讨论】:

  • 感谢@Henrik,但无需投票即可完成
  • 此外,完全失去#defines。首选const int nbucket = 5;
【解决方案2】:

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

以这一行为例:

#define narray 8;// array size;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 2013-08-09
    • 2018-10-21
    • 1970-01-01
    相关资源
    最近更新 更多