queue: changed the ADT abit.
This commit is contained in:
parent
1ce3172734
commit
c967a59706
3 changed files with 18 additions and 18 deletions
|
|
@ -61,16 +61,16 @@ static void dealloc_node(struct ref *tail) {
|
||||||
tail->i = 0;
|
tail->i = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
queue_t* init_queue() {
|
queue_t init_queue() {
|
||||||
|
|
||||||
queue_t *q = malloc(sizeof(queue_t));
|
queue_t q = malloc(sizeof(struct __queue));
|
||||||
|
|
||||||
init(q);
|
init(q);
|
||||||
|
|
||||||
return q;
|
return q;
|
||||||
}
|
}
|
||||||
|
|
||||||
void queue_clear(queue_t *q) {
|
void queue_clear(queue_t q) {
|
||||||
|
|
||||||
struct node *t, *n;
|
struct node *t, *n;
|
||||||
|
|
||||||
|
|
@ -88,13 +88,13 @@ void queue_clear(queue_t *q) {
|
||||||
init(q);
|
init(q);
|
||||||
}
|
}
|
||||||
|
|
||||||
void queue_destroy(queue_t *q) {
|
void queue_destroy(queue_t q) {
|
||||||
|
|
||||||
queue_clear(q);
|
queue_clear(q);
|
||||||
free(q);
|
free(q);
|
||||||
}
|
}
|
||||||
|
|
||||||
void queue_enqueue(queue_t *q, void *obj) {
|
void queue_enqueue(queue_t q, void *obj) {
|
||||||
|
|
||||||
if (q->head.n == NULL) {
|
if (q->head.n == NULL) {
|
||||||
q->tail.n = q->head.n = malloc(sizeof(struct node));
|
q->tail.n = q->head.n = malloc(sizeof(struct node));
|
||||||
|
|
@ -108,7 +108,7 @@ void queue_enqueue(queue_t *q, void *obj) {
|
||||||
q->head.n->block[q->head.i] = obj;
|
q->head.n->block[q->head.i] = obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* queue_dequeue(queue_t *q) {
|
void* queue_dequeue(queue_t q) {
|
||||||
|
|
||||||
void *obj;
|
void *obj;
|
||||||
|
|
||||||
|
|
@ -127,7 +127,7 @@ void* queue_dequeue(queue_t *q) {
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
int queue_isempty(queue_t *q) {
|
int queue_isempty(queue_t q) {
|
||||||
|
|
||||||
if (q == NULL)
|
if (q == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
@ -135,7 +135,7 @@ int queue_isempty(queue_t *q) {
|
||||||
return q->head.n == NULL && q->head.n == q->tail.n;
|
return q->head.n == NULL && q->head.n == q->tail.n;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t queue_num_items(queue_t *q) {
|
size_t queue_num_items(queue_t q) {
|
||||||
|
|
||||||
if (queue_isempty(q))
|
if (queue_isempty(q))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
|
|
@ -16,20 +16,20 @@
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
typedef struct __queue queue_t;
|
typedef struct __queue* queue_t;
|
||||||
|
|
||||||
queue_t* init_queue(void);
|
queue_t init_queue(void);
|
||||||
|
|
||||||
void queue_enqueue(queue_t *q, void *obj);
|
void queue_enqueue(queue_t q, void *obj);
|
||||||
|
|
||||||
void* queue_dequeue(queue_t *q);
|
void* queue_dequeue(queue_t q);
|
||||||
|
|
||||||
int queue_isempty(queue_t *q);
|
int queue_isempty(queue_t q);
|
||||||
|
|
||||||
size_t queue_num_items(queue_t *q);
|
size_t queue_num_items(queue_t q);
|
||||||
|
|
||||||
void queue_clear(queue_t *q);
|
void queue_clear(queue_t q);
|
||||||
|
|
||||||
void queue_destroy(queue_t *q);
|
void queue_destroy(queue_t q);
|
||||||
|
|
||||||
#endif /* __NOTIFY_QUEUE_H */
|
#endif /* __NOTIFY_QUEUE_H */
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
int main() {
|
int main() {
|
||||||
|
|
||||||
int i, map[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
|
int i, map[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
|
||||||
queue_t *q = init_queue();
|
queue_t q = init_queue();
|
||||||
|
|
||||||
for(i=0; i < 10; i++)
|
for(i=0; i < 10; i++)
|
||||||
queue_enqueue(q, &map[i]);
|
queue_enqueue(q, &map[i]);
|
||||||
|
|
|
||||||
Reference in a new issue