【发布时间】:2023-03-10 02:30:02
【问题描述】:
希望在添加新节点时与社区核实在 C 和 malloc 中实现队列。
当我在代码中创建node/process 时,我会在创建进程时分配内存。但是,当我查看队列的各种实现时,我注意到当添加到队列时,即void push_back(struct*);,我注意到一些实现在向队列尾部添加新节点时分配/malloc。如果我在创建struct 时已经分配了动态内存,那么在调用函数push_back(struct*) 时是否需要malloc 空间?我下面的例子没有。
typedef struct process{
int pid;
struct process* next;
} Process;
typedef struct Queue{
Process* head;
Process* tail;
}Queue;
void push_back(Queue *q, Process *p){
p->next = NULL;
if( q->head == NULL && q->tail ==NULL){
q->head = q->tail = p;
}
else {
q->tail->next = p;
q->tail = p;
}
}
【问题讨论】: