gpt4 book ai didi

python - C:初始化二叉堆

转载 作者:行者123 更新时间:2023-11-30 15:10:42 25 4
gpt4 key购买 nike

我正在开发一个项目,在该项目中用 C 实现二进制堆。我获得了用于此任务的 Python 代码,并且我本质上需要将 Python“翻译”为 C。我遇到了一些麻烦处理将 Python 中的“self”翻译为 C 中的等效内容。

以下是在 Python 中初始化二进制堆的 Python 代码:

def __init__(self, items=None):
self.heap = [None]
if items is None:
self.heap_size = 0
else:
self.heap += items
self.heap_size = len(items)
self._build_heap() # this a call to another method

我很确定我需要定义一个 struct BinaryHeap 并填写此信息。在 C 中我该怎么说“self.heap = [None]”或“self.heap_size = 0”?注意:我对 C 还很陌生,哈哈。

最佳答案

您将按照您所说的声明一个结构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 中没有像列表这样的内置数据结构,因此您需要实现自己的数据结构或查找开源数据结构。

关于python - C:初始化二叉堆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36024923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com