数据结构有关问题,请问!基数排序算法,请教为什么小弟我做注释的地方有有关问题呢
数据结构问题,请教!基数排序算法,请问为什么我做注释的地方有问题呢?
------解决思路----------------------
可能是算符优先级问题。
也可能需要重建所有。
------解决思路----------------------
ahead =malloc()就是申请空间 这个ahead指向这个空间的首地值 所以就不是空了,if当然不执行。
typedef struct redical
{
datatype data;
int *red;
}ss;
ss *target = NULL;
typedef struct array
{
datatype data;
struct array *next;
}array;
array **ahead = NULL, *ap = NULL,**alast = NULL;
void radicalsort()
{
int i, j,k=1,w,n;
ahead = (array **)calloc(length, sizeof(array *));
alast = (array **)calloc(length, sizeof(array *));
while (k <= number)
{
for (i = 0; i < length; i++)
{
ahead[i] = NULL;
alast[i] = NULL;
}
for (i = 0; i < length; i++)
{
ap = (array *)calloc(1, sizeof(array));
ap->data = target[i].data;
ap->next = NULL;
if (!ahead[target[i].red[number - k]]) //此处明明已将指针赋 NULL,但 if下的语句为什么不执行而是直接跳到else去执行呢?单步调试体现出来的
ahead[target[i].red[number - k]] = ap;
else
alast[target[i].red[number - k]]->next = ap;
alast[target[i].red[number - k]] = ap;
}
i = 0;
while (i<length)
{
for (ap = ahead[i]; ap; ap = ap->next)
{
n = 1;
target[i].data = ap->data;
for (j = number - 1; j >= 0; j--)
{
w = (int)(target[i].data / n);
target[i].red[j] = w % 10;
n *= 10;
}
}
i++;
}
k++;
}
}
------解决思路----------------------
可能是算符优先级问题。
也可能需要重建所有。
------解决思路----------------------
ahead =malloc()就是申请空间 这个ahead指向这个空间的首地值 所以就不是空了,if当然不执行。