gpt4 book ai didi

c - 如何使用链接实现在c中的队列中插入元素

转载 作者:行者123 更新时间:2023-11-30 16:09:37 25 4
gpt4 key购买 nike

我尝试了一个使用链接实现的 C 语言基本队列程序。但它显示用于将元素插入队列的函数存在一些错误。我还想显示队列中的元素。下面是我尝试过的代码。当编译器到达我用来插入元素的 Insert() 函数时,CLI 退出。另外我想确保我用来显示元素的方法是正确还是错误。

    #include<stdio.h>
#include<stdlib.h>
typedef int QueueElement;
typedef enum{FALSE,TRUE} Boolean;
typedef struct node{
QueueElement data;
struct node *next;
}Node;
typedef struct queue{
Node *rear;
Node *front;
Boolean Full;
int count;
}Queue;
void CreateQueue(Queue *q){
q->count = 0;
q->Full = FALSE;
q->front = q->rear = NULL;
}
Boolean IsQueueEmpty(Queue *q){
return(q->front == NULL && q->rear == NULL);
}
Boolean IsQueueFull(Queue *q){
return(q->Full);
}
void Insert(QueueElement x, Queue *q){
Node *np;
np = (Node* )malloc(sizeof(Node));
if(np == NULL){
printf("Memory is Full\n");
q->Full = TRUE;
}
np->data = x;
np->next = NULL;
if(IsQueueEmpty(q))
q->front = q->rear = np;
else{
q->rear->next = np;
q->rear = np;
}
q->count++;
}
void Remove(QueueElement *x, Queue *q){
Node *np;
if(IsQueueEmpty(q))
printf("Queue is Empty\n");
else{
q->count--;
*x = q->front->data;
np = q->front;
q->front = q->front->next;
if(q->front == NULL)
q->rear = NULL;
free(np);
}
}
int main(){
Queue q;
Insert(21,&q);
int n;
Remove(&n,&q);
printf("%d ",n);
}

最佳答案

Queue q;
Insert(21,&q);

声明q后,您应该调用createQueue函数来初始化count、rear和front指针。

 Queue q;
CreateQueue(&q);
Insert(21,&q);

否则它们将具有不确定的值。

<小时/>

显示队列的函数。

void Display(Queue q) {
Node *iter = q.front;

while(iter) {
printf("%d ", iter->data);
iter = iter->next;
}
}

main调用它,如下所示。

Display(q);

关于c - 如何使用链接实现在c中的队列中插入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59099997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com