Example #1
0
/// @brief Main function to test the queue structure
///
/// @return 0 if all went ok, 1 otherwise
int
main(void)
{
  queue* s = NULL;
  int count = 100000;

  printf("\033[33m > Starting queue test\033[37m :\n\n");

  // Creating queue
  printf("[ \033[32mCreating\033[37m queue ..\n");
  s = queue_create();
  if (!s)
    return 1;
  printf("Queue correctly created ] \n\n");

  printf("Is the queue empty ? > %s\n", (queue_empty(s) ? "yes" : "no"));
  printf("Queue size : %i\n\n", queue_size(s));

  // Pushing / Poping
  printf("[ \033[32mPushing\033[37m %i elements in the queue ..\n\n", count);
  for (int i = 0; i < count; i++)
    queue_push(s, i);

  printf("Is the queue empty ? > %s\n", (queue_empty(s) ? "yes" : "no"));
  printf("Queue size : %i\n\n", queue_size(s));

  printf("[ \033[32mPoping\033[37m %i elements from the queue ..\n\n", count);
  for (int i = 0; i < count; i++)
    queue_pop(s);

  printf("Is the queue empty ? > %s\n", (queue_empty(s) ? "yes" : "no"));
  printf("Queue size : %i\n\n", queue_size(s));

  printf("[ \033[32mPushing\033[37m 100000 elements in the queue ..\n\n");
  for (int i = 0; i < count; i++)
    queue_push(s, i);

  printf("Is the queue empty ? > %s\n", (queue_empty(s) ? "yes" : "no"));
  printf("Queue size : %i\n\n", queue_size(s));

  printf("[ \033[32mClearing\033[37m the queue ..\n\n");
  queue_clear(s, NULL);

  printf("Is the queue empty ? > %s\n", (queue_empty(s) ? "yes" : "no"));
  printf("Queue size : %i\n\n", queue_size(s));


  printf("[ \033[32mPushing\033[37m 1, 2, 3, 4, 5 in the queue ..\n\n");
  queue_push(s, 1);
  queue_push(s, 2);
  queue_push(s, 3);
  queue_push(s, 4);
  queue_push(s, 5);
  printf("\033[32mFront\033[37m element is : %i\n", queue_front(s));
  printf("\033[32mBack\033[37m element is : %i\n\n", queue_back(s));

  printf("\033[32mVisiting\033[37m the queue ..\n");
  queue_visit(s, visitor, NULL);


  printf("\n[ \033[32mDeleting\033[37m the queue..\n\n");
  queue_delete(s, NULL);

  printf("Is the queue empty ? > %s\n", (queue_empty(s) ? "yes" : "no"));
  printf("Queue size : %i\n\n", queue_size(s));

  return 0;
}
Example #2
0
int main(int argc, char **args)
{
	//用于存放int型数据的队列
	s_queue queue_int;
	//释放内存函数与访问函数均是int型
	init_queue(&queue_int, sizeof(int), free_int, print_int);
	//插入数据
	for (int i = 0; i < 5; ++i)
	{
		int *e = (int *) malloc(sizeof(int));
		*e = i;
		queue_insert(&queue_int, e);
	}
	//显示queue中所有数据内容
	queue_visit(&queue_int);
	//销毁queue
	destroy_queue(&queue_int);

	printf("\n");

	//用于存放student型数据的queue
	s_queue queue_stu;
	//释放内存函数与访问函数均是student型
	init_queue(&queue_stu, sizeof(student), free_stu, print_stu);

	//在队列尾插入数据
	student *stu1 = (student *) malloc(sizeof(student));
	stu1->no = 15100101;
	stu1->age = 23;
	stu1->name = (char *) malloc(20);
	memcpy(stu1->name, "lidq", 20);
	queue_insert(&queue_stu, stu1);
	//在队列尾插入数据
	student *stu2 = (student *) malloc(sizeof(student));
	stu2->no = 15100102;
	stu2->age = 21;
	stu2->name = (char *) malloc(20);
	memcpy(stu2->name, "zhaoy", 20);
	queue_insert(&queue_stu, stu2);
	//在队列尾插入数据
	student *stu3 = (student *) malloc(sizeof(student));
	stu3->no = 15100103;
	stu3->age = 22;
	stu3->name = (char *) malloc(20);
	memcpy(stu3->name, "liuzh", 20);
	queue_insert(&queue_stu, stu3);

	//显示队列中所有内容
	queue_visit(&queue_stu);

	printf("\n");

	//在队列头删除元素
	queue_delete(&queue_stu);
	//显示队列中所有内容
	queue_visit(&queue_stu);

	//销毁队列
	destroy_queue(&queue_stu);

	return 0;
}