Lea*_*arn 1 c queue data-structures
我必须在一个实现入队操作queue.在节点结构中,datatypefor dataPtr是void*.这是我的代码,但在调用此函数时,如何传递参数?
typedef struct node
{
void* dataptr;
struct node* next;
} QUEUE_NODE;
typedef struct
{
QUEUE_NODE* front;
QUEUE_NODE* rear;
int count;
}QUEUE;
//createqueue
QUEUE* createQueue(void)
{
QUEUE* queue;
queue = (QUEUE*)malloc(sizeof(QUEUE));
if (queue)
{
queue->front = NULL;
queue->rear = NULL;
queue->count = 0;
}
return queue;
}
//Enqueue
bool enqueue(QUEUE* queue, void* itemptr)
{
QUEUE_NODE* newptr;
if (!(newptr = (QUEUE_NODE*)malloc(sizeof(QUEUE_NODE))))
return false;
newptr->dataptr = itemptr;
newptr->next = NULL;
if (queue->count == 0)
queue->front = newptr;
else
queue->rear->next = newptr;
(queue->count)++;
queue->rear = newptr;
printf("inserted value is%d\n", newptr->dataptr);
return true;
}
Run Code Online (Sandbox Code Playgroud)
void *队列的指针意味着它可以存储(指向)任何类型的数据; 队列不关心你存储在它里面的东西.
因此,只需使用指向数据类型的指针即可调用enqeue函数.应该没有必要把它投射到(void *).