Archived
1
0
Fork 0

queue: changed the ADT abit.

This commit is contained in:
Henrik Hautakoski 2010-09-09 07:47:57 +02:00 committed by Henrik Hautakoski
parent 1ce3172734
commit c967a59706
3 changed files with 18 additions and 18 deletions

View file

@ -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;

View file

@ -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 */

View file

@ -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]);