gpt4 book ai didi

c - 理解给定的头文件

转载 作者:行者123 更新时间:2023-11-30 17:06:25 31 4
gpt4 key购买 nike

我从大学计算机科学类(class)中接到任务,根据给定的头文件构建二叉搜索树。但是,我不太明白其中的函数,它是指针和结构体的混合。

这是头文件:

#ifndef GENBST_H
#define GENBST_H
#include <stdio.h>
#include <stdlib.h>
typedef void* Elm;
typedef void* BST;
typedef void* BST_ROOT;
typedef enum {SUCEESS, OUT_OF_MEM, BAD_ARGS, FAILURE } Result;
BST_ROOT BSTCreate( Elm root_val, Elm (*create_elm)(),
void (*cpy_elm) (Elm,Elm),
int (*cmp_elm) (Elm, Elm),
void (*free_elm)(Elm) );
void BSTDestroy (BST_ROOT root);
Result BSTAddElement (BST_ROOT root, Elm node);
Result BSTRemoveElement (BST_ROOT root, Elm node);
Elm BSTFindElement (BST_ROOT root, Elm node);
#endif

你能帮我弄清楚每个函数的含义吗?具体在BSTCreate函数中?

最佳答案

我无法对此给出完整的答案,但我希望这个解释能对您有所帮助。

首先,正如 Magix 的评论中所说,头文件中没有函数定义,但是头文件为您提供了接口(interface)应该如何的规范。它指定了函数原型(prototype)和变量类型,给定这些,您应该能够实现 BST。

尝试写下一个算法,看看是否可以使用此 header 中声明的所有原型(prototype)来实现它。这么说,如果有两行解释会有很大帮助;)

让我们看一下标题的每一部分!首先,您会获得树中的元素和 BST 的类型:

typedef void* Elm;
typedef void* BST;
typedef void* BST_ROOT;

然后枚举指定您可以使用的某些返回类型的值:

typedef enum {
SUCCESS, // 0 (I corrected the spell)
OUT_OF_MEM, // 1
BAD_ARGS, // 2
FAILURE // 3
} Result;

在这里你明白你必须提供一个创建 BST 的函数。

BST_ROOT BSTCreate( 
Elm root_val,
Elm (*create_elm)(),
void (*cpy_elm) (Elm,Elm),
int (*cmp_elm) (Elm, Elm),
void (*free_elm)(Elm) );

该函数必须使用其他四个函数:

    Elm  (*create_elm)(),
void (*cpy_elm) (Elm,Elm),
int (*cmp_elm) (Elm, Elm),
void (*free_elm)(Elm)

最后你还应该提供一组函数来修改 BST:

void BSTDestroy (BST_ROOT root);
Result BSTAddElement (BST_ROOT root, Elm node);
Result BSTRemoveElement (BST_ROOT root, Elm node);
Elm BSTFindElement (BST_ROOT root, Elm node);

关于c - 理解给定的头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34743735/

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