【发布时间】:2012-08-25 03:38:51
【问题描述】:
我有一个设置长度的队列实现为动态 c 数组,如下所示:
typedef struct {
float* queue;
int size;
int pointer;
} QueueStruct;
void createQueue(QueueStruct* queueInstance, int size){
queueInstance->queue = malloc(sizeof(float)*size);
queueInstance->size = size;
queueInstance->pointer = 0;
}
void addElementToQueue(QueueStruct* queueInstance,float element){
queueInstance->queue[pointer] = element;
if (queueInstance->pointer == queueInstance.size - 1){
queueInstance->pointer = 0;
} else {
++queueInstance->pointer;
}
}
void freeQueue(QueueStruct* queueInstance){
free(queueInstance->queue);
}
我想实现这个功能:
float* returnQueue(QueueStruct queueInstance){
//I want this function to malloc a new float* and then put the queue in it in the
// correct order, from start to finish, as pointed too by the pointer.
//Im not sure how to do this.
}
任何帮助将不胜感激。
编辑:更正了一个愚蠢的编程错误 - 这是我程序中实际内容的简化版本。
【问题讨论】:
-
对不起,但是:queueInstance = QueueStruct;这样可行?你不应该分配内存或其他东西吗?当您尝试将类型分配给变量指针时,编译器不会对您大喊大叫吗?
-
根据我的编辑,这不是我的实际代码。我在无法访问网络的 hackintosh 上编程...所以我无法复制和粘贴我的实际代码。
-
我不确定我是否遵循...您是说您想要返回的队列的精确副本,还是队列的子集?您的意思是将“QueueStruct”或“QueueStruct*”传递给 returnQueue 函数吗?
-
@Mike 我很确定它应该是一个指针,但感谢您指出。老实说,我错过了它。按照我的理解,他想要他的动态数组的有序数组表示。含义:从指针到终点,从锚点到指针。
-
@ATaylor 正确。谢谢你的措辞更好。
标签: c arrays dynamic queue shift