【发布时间】:2021-07-29 08:47:17
【问题描述】:
我正在尝试构建一个包含节点的队列数据结构,每个节点都有整数值和指向下一个节点的指针,他有问题 deQueue(Queue q);函数,它返回像堆栈(LIFO)这样的元素这是我的代码和输出
deQueue();
int deQueue(Queue* q){
if(q->head)
{
int result;
Node*temp=q->head;
result=temp->value;
q->head=temp->next;
free(temp);
if(q->head==NULL)
q->tail=NULL;
return result;
}
}
enQueue():
void enQueue(Queue* q ,Node* node){
if(isEmpty(q)){
q->head = q->tail = node;
q->head->next = q->tail->next = NULL;
q->size++;
}
else{
q->tail->next = node;
q->tail = node;
q->tail->next = NULL;
q->size++;
}
}
main():
int main()
{
Queue* q = initializerQueue();
Node* n1 = newNode(10);
Node* n2 = newNode(20);
Node* n3 = newNode(30);
Node* n4 = newNode(40);
enQueue(q , n1);
enQueue(q , n2);
enQueue(q , n3);
enQueue(q , n4);
printQueue(q);
printf("\n%d - %d - %d - %d " , deQueue(q) , deQueue(q) , deQueue(q) , deQueue(q));
return 0;
}
【问题讨论】:
-
C 还是 C++?请选择一个;很少两个标签都适用。
-
您可能会在链表的头部添加新元素,在链表的末尾添加新元素可能会帮助您向我们展示完整的代码。
-
如果我刚才所说的令人困惑,请考虑一下。给定
foo( a(), b(), c() ),忘记你认为你知道的并问自己:a()被称为 beforeb()还是c()?你确定? Now read this。当您期望执行顺序时,它会产生巨大的不同,而实际上没有任何保证。 -
完全不相关,你真的应该在 dequeue'ing 时减少你的队列 @987654331@ 成员。
-
@HosnyyHanyy 真的没那么复杂。事实上,它是一种非常简单的语言(很少有保留字、基本结构等)。但它承载着令人难以置信的责任。仅次于汇编,没有任何一种语言比 C 更快或更轻松地让你自爆。如果使用得当,它很棒(尽管我仍然更喜欢 C++),但它非常很容易不正确地使用所以强大的力量来了......是的。无论如何,很高兴你能理解。
标签: c data-structures