C:初始化二进制堆

时间:2016-03-16 00:46:57

标签: python c binary-heap

我正在开发一个我在C中实现二进制堆的项目。我已经为此任务提供了Python代码,我基本上需要"翻译" Python到C.我在处理翻译时遇到了一些麻烦#34; self"在Python中等同于C。

这是用于在Python中初始化二进制堆的Python代码:

guard let myLabel = myView.viewWithTag(1) as? UILabel else {
  ... //ABORT MISSION
}

我非常确定我需要定义一个结构BinaryHeap并填写此信息。我怎么会说" self.heap = [None]"或" self.heap_size = 0"在C?注意:我对C来说相当新,哈哈。

1 个答案:

答案 0 :(得分:1)

如你所说,你会声明一个结构BinaryHeap,然后你会做这样的事情:

/* This is the init function */
BinaryHeap *BinaryHeap_init(void **items):
{
    BinaryHeap *self = malloc(sizeof(BinaryHeap));
    if (self) {
        self->heap = NULL; /* This is how you set a property */
        if (items == NULL) {
            self->heap_size = 0;
        }
        /* This is how you call a "method" */
        BinaryHeap_build_heap(self);
    }
    return self;
}

/* This is how you define a "method" */
void BinaryHeap_build_heap(BinaryHeap *self)
{
    /* Do something with self->heap, etc. */
} 

/* You also need a destructor */
void BinaryHeap_delete(BinaryHeap *self)
{
    if (self) {
        /* Destroy self->heap here */
        free(self);
    }
}

这是“C语言中的对象”的基础知识,但我认为如果你对C语言不是很熟悉,你可能会咬得太多。 C中的列表没有内置的数据结构,因此您需要实现自己的或找到开源的数据结构。