Example #1
0
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;
}
Example #2
0
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;
}
Example #3
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;
}
Example #6
0
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");
}
Example #8
0
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;
}
Example #9
0
};

//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);
}