コード例 #1
0
void delete_ContextManager(ContextManager *self)
{
      for(int i = 0; i < self->num_platforms; ++i)
		  delete_Platform(self->platforms[i]);
	  ContextManager_ShutdownQueues(self);
	  for(int i = 0; i < self->num_threads; ++i)
	  {
		  pthread_join(self->threads[i], NULL);
	  }
      delete_Queue(self->incoming_queue, true);
      delete_Queue(self->outgoing_queue, true);
      SFREE(self);
}
コード例 #2
0
int HuffManCode(HuffMan * root, FILE  * fp){
    HuffMan * current = NULL;
    Queue * queue = NULL;
    queue = creat_Empty_Queue();
    enter_Queue(queue, root);

    while ( ! is_empty_queue(queue)){
        current = delete_Queue(queue);
        if ( current -> right_child == NULL && current -> left_child == NULL && current != root) {
            printf("%c %d %s \n", current -> ch, current -> weight, current -> code);
            
            fprintf(fp, "%c %s\n", current -> ch, current -> code);
        }
        if ( current -> right_child == NULL && current -> left_child == NULL && current == root) {
            strcpy(current -> code, "0");
           printf("%c %d %s \n", current -> ch, current -> weight, current -> code);
            fprintf(fp, "%c %s\n", current -> ch, current -> code);
        }
        if (current -> left_child) {
                strcpy(current -> left_child -> code, current -> code);
            strcat(current -> left_child -> code, "0");
            enter_Queue(queue, current -> left_child);
        }
        if (current -> right_child) {
                strcpy(current -> right_child -> code, current -> code);
            strcat(current -> right_child -> code, "1");
            enter_Queue(queue, current -> right_child);
        }
    } 
    return 0;
}
コード例 #3
0
HuffMan * creat_huffman_tree(Queue * head){
    HuffMan * right;
    HuffMan * left;
    HuffMan * current;

    while ( !_is_empty_queue(head) ) {
        left = delete_Queue(head);
        right = delete_Queue(head);
        current = (HuffMan *)malloc(sizeof(HuffMan));
        current -> weight = left -> weight + right -> weight;
        current -> left_child = left;
        current -> right_child = right;
        order_Enter_Queue(head, current);
    }
    return head -> front -> next -> data;
}
コード例 #4
0
ファイル: Q3-4.CPP プロジェクト: heqianwu/CareerCup
int main()
{	
	int data_pop;
	//创建一个空的栈,pS指针指向该栈
	PSTACK pS1 = create_stack();
	PSTACK pS2 = create_stack();

	enter_Queue(pS1,1);
	enter_Queue(pS1,2);
	enter_Queue(pS1,3);

	delete_Queue(pS1,pS2,&data_pop);
	printf("The pop data:%d\n",data_pop);
	delete_Queue(pS1,pS2,&data_pop);
	printf("The pop data:%d\n",data_pop);

	enter_Queue(pS1,4);
	enter_Queue(pS1,5);

	delete_Queue(pS1,pS2,&data_pop);
	printf("The pop data:%d\n",data_pop);

	enter_Queue(pS1,6);

	delete_Queue(pS1,pS2,&data_pop);
	printf("The pop data:%d\n",data_pop);
	delete_Queue(pS1,pS2,&data_pop);
	printf("The pop data:%d\n",data_pop);
	delete_Queue(pS1,pS2,&data_pop);
	printf("The pop data:%d\n",data_pop);

	return 0;
}