使用提供的问题实现简单的ADT队列

时间:2018-02-15 02:00:18

标签: c queue adt

/****************************************************************************/
/* File: queue.h
 */
/****************************************************************************/

/****************************************************************************/
/*                                                                          */
/*              Simple Queue ADT                                            */
/*                                                                          */
/*              Declaration                                                 */
/*                                                                          */
/****************************************************************************/
typedef struct {
    int key;
    int value;
} data_t;

typedef struct queueNode {
    struct queueNode *next, *prev;
    data_t *data;
} QueueNode;

typedef struct queueType {
    QueueNode *head;
    QueueNode *tail;
} Queue;

/ ********************************************** **********************

好吧,所以我上面有一个名为Queue.h的文件,这在某些方面对我有意义,因为它给data_t一对值(值和键)并将它存储在QueueNode中,它被放置在队列的尾部或头部。

我遇到的问题是我不知道如何使用它来创建一个名为Queue.c的类来执行以下功能:

voidinitQueue(Queue *self){
}

void enQueue(Queue *self, data_t *data){
}

QueueNode *frontNode(Queue *self){
}

data_t *frontValue(Queue *self){
}

data_t *dequeue(Queue *self){
}

void removeNode(queue *self, queueNode *p){
}

QueueNode *findNode(queue *self, data_t *data){
}

void printQ(queue *self, char *label){
}

这个(不应该改变)main():

/*
int main ()
{
    Queue myQueue;
    QueueNode *p;
    data_t data[10], d2;
    int i;

    initQueue (&myQueue);

    for (i = 0; i < 10; i++) {

        data[i].key = i;
        data[i].value = 10*i;

        enQueue (&myQueue, &data[i]);
    }

    printQ (&myQueue, "MyQueue:" );

}
*/

现在我不会要求任何人为我这样做,从长远来看这对我没有任何帮助,但我完全不知道该怎么做。

我对队列的工作方式有基本的了解,我的问题是如何执行它。我现在也在另一个班级学习java,它开始让我迷惑什么规则适用于哪个班级(如在学校班级,而不是java班级)

如果有人可以告诉我一个人如何与其中一些(或至少是initQueue)合作,我会非常感激,我已经在这12小时工作了,我正在绝望...... 。

编辑: 更新:这就是我现在拥有的:

void initQueue(Queue *self)
{
self->head = NULL;
self->tail = NULL;
}

void enQueue(Queue *self, data_t *data)
{
self->head = data;
}

0 个答案:

没有答案