我通过创建 10 个存储桶成功地编写了用于基数排序的 C++ 代码。对于 10 个存储桶,我以这种方式创建它们:
struct node{
struct node* next;
long value;
};
struct node*bucket[10];
for (int i=0; i<10; ++i) {
bucket[i] = (struct node *) malloc (1000000*sizeof(struct node));
}
它做得很完美。
但是现在我需要将存储桶的数量增加到 100000。我尝试修改这些存储桶的大小,例如:
struct node*bucket[100000];
for (int i=0; i<100000; ++i) {
bucket[i] = (struct node *) malloc (1000000*sizeof(struct node));
}
但这次我想我什至不能创建那些桶。我正在使用 Visual Studio 进行编码,这是用 C++ 编写的。编译器给了我这些警告:
: 警告 C4305: 'argument' : 从 '__int64' 截断到 'size_t'
: 警告 C4309: 'argument' : 截断常数值
我在网上搜了一下,有人说这个数字太大了。这是我第一次在链表中处理这么大的数字。我是否需要修改任何内容以使此代码再次工作?
谢谢你。任何想法和帮助我将不胜感激!