寻找引用节点的方法,并将其设置为创建函数的null。来自给定输出的任何建议将队列中的前节点和后节点设置为NULL?
gcc -std=c99 -ggdb -Wall -Wextra -c queueADT.c
queueADT.c:13:1: warning: useless storage class specifier in empty declaration [enabled by default]
};
^
queueADT.c: In function 'que_create':
queueADT.c:36:6: error: 'struct <anonymous>' has no member named 'front'
new->front = NULL;
^
queueADT.c:37:6: error: 'struct <anonymous>' has no member named 'rear'
new->rear = NULL;
^
queueADT.c:38:8: error: expected identifier before '*' token
new->*cmprFunc = NULL;以下是导致错误的代码的主要部分。(2个结构)
typedef struct node {
void* data;
//size_t num;
struct node *next;
};
struct QueueADT {
struct node front; /* pointer to front of queue */
struct node rear; /* pointer to rear of queue */
int *contents[ QUEUE_SIZE ]; /* number of items in queue */
int *cmprFunc; /* The compare function used for insert */
};
#include "queueADT.h"
/// create a queue that is either sorted by cmp or FIFO
//function with two void
QueueADT que_create( int (*cmp)(const void*a,const void*b) ) {
QueueADT new;
new = (QueueADT)malloc(sizeof(struct QueueADT));
if (cmp == NULL) {
//do I create a new pointer to the cmp_int64?
new->front = NULL;
new->rear = NULL;
new->*cmprFunc = NULL;
} else {
new->*cmprFunc = &cmp;
new->front = NULL;
new->rear = NULL;
}
return ( new );
}发布于 2014-10-30 20:32:56
这在我看来是无效的:
struct QueueADT new;
new = (QueueADT)malloc(sizeof(struct QueueADT));
if (cmp == NULL) {
//do I create a new pointer to the cmp_int64?
new->front = NULL;
...也许你需要这个:
struct QueueADT *new;
new = (struct QueueADT*)malloc(sizeof(struct QueueADT));
if (cmp == NULL) {
//do I create a new pointer to the cmp_int64?
new->front = NULL;
...和
struct QueueADT {
struct node front; /* pointer to front of queue */
struct node rear; /* pointer to rear of queue */
int *contents[ QUEUE_SIZE ]; /* number of items in queue */
int *cmprFunc; /* The compare function used for insert */
};可能应该是
struct QueueADT {
struct node *front; /* pointer to front of queue */
struct node *rear; /* pointer to rear of queue */
int *contents[ QUEUE_SIZE ]; /* number of items in queue */
int *cmprFunc; /* The compare function used for insert */
};和这里的typedef是没有意义的,应该删除它:
typedef struct node {
void* data;
//size_t num;
struct node *next;
};其他问题:struct QueueADT中的这两个声明在我看来很可疑:
int *contents[ QUEUE_SIZE ]; /* number of items in queue */
int *cmprFunc; /* The compare function used for insert */发布于 2014-10-30 20:31:39
删除从typedef struct node {..
typedef到typedef struct QueueADT {//body}; be QueueADT *new;以此类推..
https://stackoverflow.com/questions/26652992
复制相似问题