我正在开发一个我在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来说相当新,哈哈。
答案 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中的列表没有内置的数据结构,因此您需要实现自己的或找到开源的数据结构。