int main (int argc, char **argv) { execname = basename (argv[0]); queue_ref queue = new_queue(); if (argc < 2) { putinqueue (queue, stdin, "-"); }else { for (int argi = 1; argi < argc; ++argi) { if (strcmp (argv[argi], "-") == 0) { putinqueue (queue, stdin, "-"); }else { putfileinqueue (queue, argv[argi]); } } } while (! isempty_queue (queue)) { char *oldstring = remove_queue(queue); printf ("%s\n", oldstring); free (oldstring); } free_queue(queue); return exit_status; }
int push_queue(rect_t elem, queue_t *queue) { qelem_t *qelem; if (queue == NULL) { /* Parametri errati */ errno = EINVAL; return -1; } if ( (qelem = (qelem_t *) malloc(sizeof(qelem_t))) == NULL ) return -1; qelem->info = elem; qelem->next = NULL; if (isempty_queue(queue)) { /* Coda vuota */ queue->head = qelem; queue->tail = qelem; } else { queue->tail->next = qelem; queue->tail = qelem; qelem->next = NULL; } ++(queue->elem); return 0; }
static void * dequeue(struct queue *q) { struct msg *m; if (isempty_queue(q)) err_quit("dequeue: the queue is empty"); m = queue_first(q); queue_remove_head(q); return (m); }
/*Insert item into the queue-----------------------------------------*/ void insert_queue(queue_ref queue, queue_item_t item) { assert(is_queue(queue)); //create the new node and initialize it queuenode_ref node = new_node(item); //set the links of the new node if (isempty_queue(queue)) { queue->front = queue->rear = node; } else { queue->rear->link = node; queue->rear = queue->rear->link; } }
/*Remove first item in queue and free the node-----------------------*/ queue_item_t remove_queue(queue_ref queue) { assert(is_queue(queue)); assert(!isempty_queue(queue)); //creates temp node and item for return queuenode_ref tnode = queue->front; queue_item_t titem = queue->front->item; //changes front link queue->front = queue->front->link; tnode->link = NULL; //frees nodes and items free(tnode); //return item return titem; }
qelem_t *pop_queue(queue_t *queue) { qelem_t *temp; if (queue == NULL || isempty_queue(queue)) { /* Argomenti non validi */ errno = EINVAL; return NULL; } temp = queue->head; queue->head = queue->head->next; temp->next = NULL; --(queue->elem); return temp; }
void BFS(int v) { int i; insert_queue(v); state[v]=waiting; while(!isempty_queue()) { v=delete_queue(); printf("%d ",v); state[v]=visited; for(i=0;i<n;i++) { if(adj[v][i]==1&&state[i]==initial) { insert_queue(i); state[i]=waiting; } } } printf("\n"); }
int main (int argc, char **argv) { execname = basename (argv[0]); queue *the_queue = new_queue(); if (argc < 2) { putinqueue (the_queue, stdin, "-"); }else { for (int argi = 1; argi < argc; ++argi) { if (strcmp (argv[argi], "-") == 0) { putinqueue (the_queue, stdin, "-"); }else { putfileinqueue (the_queue, argv[argi]); } } } while (! isempty_queue (the_queue)) { printf ("%s\n", remove_queue (the_queue)); } return exit_status; }
}; //Creates and returns a new queue containing nothing. queue *new_queue (void) { queue *newQueue = malloc(sizeof(queue)); assert(newQueue != NULL); newQueue->front = NULL; newQueue->rear = NULL; return newQueue; } //Frees a queue from memory. void free_queue (queue *this) { assert (isempty_queue (this)); free (this); } //Takes in a queue item to be stored and a queue to store it to. //Creates a new node, stores the given item in the node, and then //places the node at the rear of the list. void insert_queue (queue *this, queue_item_t item) { assert(this != NULL); queue_node *newNode = malloc(sizeof(queue_node)); assert(newNode != NULL); newNode->item = item; newNode->link = NULL; if(this->front == NULL){ this->front = newNode;
/*Free the Queue-----------------------------------------------------*/ void free_queue(queue_ref queue) { assert(is_queue(queue)); assert(isempty_queue(queue)); memset(queue, 0, sizeof (struct queue)); free(queue); }