gpt4 book ai didi

c - 需要有关使数组出队的帮助

转载 作者:行者123 更新时间:2023-11-30 14:21:00 25 4
gpt4 key购买 nike

好的,伙计们。我可以看到我正在做的这个项目的终点线。我试图弄清楚为什么当我尝试返回数组的值(即出队)时,我的数组会吐出 NULL。我相信我的入队函数可以工作,并且也相信它从地址中获取值指针所指。这是我的代码。我故意不包含我的主要功能,只是因为我不想让电路板重载。但如果需要查看来诊断问题,请告诉我。

#include <assert.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// the capacity of the queue
#define CAPACITY 10

// a queue
typedef struct
{
// the index of the first element in the queue
int head;

// storage for the elements in the queue
char* strings[CAPACITY];

// the size of the queue
int size;
}
queue;

// declare a queue (as a global variable)
queue q;

/*
* Puts a new element into the queue into the "end" of the data structure
* so that it will be retrived after the other elements already in the
* queue.
*/
bool enqueue(char* str)
{
int rear = 0; // back of the queue

if (q.size==CAPACITY)
{
return false;
}
else
{
rear = (rear + 1) % CAPACITY;
q.strings[rear] = str;
printf("%s", q.strings[rear]);

q.size++;
return true;
}
}

/**
* Retrieves ("dequeues") the first element in the queue, following the
* the "first-in, first-out" (FIFO) ordering of the data structure.
* Reduces the size of the queue and adjusts the head to the next element.
*/
char* dequeue(void)
{
char *charHead = NULL;
if (q.size)
{
charHead = malloc(sizeof(char)) ;
char *chpointer = malloc(sizeof(strArray[12]));
q.head++;
q.head = q.head%CAPACITY;
charHead = q.strings[q.head];
return charHead;
}
// Return null character if queue is empty
return NULL;
}

最佳答案

  1. 入队肯定行不通。怎么可能呢,当它声明 intarer = 0; 时,这意味着它总是在同一位置入队。
  2. 您的出队有两个malloc调用,但似乎没有执行任何操作。您无需对它们的结果执行任何操作,它们只不过是内存泄漏。
  3. 您应该考虑 headrear 的含义,并记录下来。否则,无法判断 dequeue 是否正确。它首先递增 head,然后获取 q.strings[q.head]。如果 head 是最后一个排队字符串的位置,这是错误的 - 您应该在递增之前获取该字符串。
  4. 你永远不会减少大小。这是不对的。

关于c - 需要有关使数组出队的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14974746/

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