我对如何正确使用Binary Heap提供的内容感到有点困惑std.container.更具体地说,我想创建一个最大的整数堆,所以我尝试写
auto maxHeap = BinaryHeap!int();
并得到一个关于int不能用[]切片的编译器投诉.我试图在Phobos上阅读它的文档,但我不明白如何创建一个新的,空的二进制堆,旨在存储整数.
有人可以借给我一个手吗?
我编写了一个程序来组装.dot文件,并希望使用Clojure sh来提供编译命令.具体来说,我使用以下函数来执行此操作:
(defn compile-graphviz
"Dumps graphviz-string to a file, then compiles it using dot."
[graphviz-string]
(do
(spit "./tree.dot" graphviz-string)
(sh "dot -Tpng \"/.tree.dot\" -o\"/.tree.png\"")))
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,第二部分失败,在REPL上给出以下错误消息:
IOException error=2, No such file or directory java.lang.UNIXProcess.forkAndExec (UNIXProcess.java:-2)
Run Code Online (Sandbox Code Playgroud)
我查看了文档sh和示例,我无法理解为什么这不起作用.我错过了什么?
假设我有一个标准的链表结构如下:
struct Linked {
int data;
Linked* next;
}
Run Code Online (Sandbox Code Playgroud)
我通过指针足够的内存来存储另一个并初始化它,calloc从而在循环中制作了一堆它们.根据链表的规范,我只维护一个指向第一个节点的指针,如下所示:nextLinked
struct Linked *first = make_list();
Run Code Online (Sandbox Code Playgroud)
现在,我想释放整个列表所占用的内存.我可以打电话吗?
free(first);
Run Code Online (Sandbox Code Playgroud)
让它释放所有内存(包括分配给所有next指针的内存),还是我必须从后端重新分配?
我正在写一个树状的,作为其中的一部分,我需要它有两个函数,它们都返回一个指针:一个用于创建叶节点,另一个用于创建内部节点.我的头文件如下:
#ifndef NODE_H
#define NODE_H
#include<stdint.h>
typedef uint32_t Number;
typedef struct Node
{
Number val, height;
struct Node *left, *right, *parent;
} Node;
//makes leaves
Node* make_node (Number);
//makes internal nodes
Node* make_internal (Node*, Node*);
//you'll see why we need these
inline Number num_min(Number, Number);
inline Number num_max(Number, Number);
#endif
Run Code Online (Sandbox Code Playgroud)
实施如下:
#include "node.h"
#include <stdlib.h>
inline Number num_min(Number a, Number b) {
return (a < b) ? a : b;
}
inline Number num_max(Number a, Number b) {
return (a …Run Code Online (Sandbox Code Playgroud) c ×2
binary-heap ×1
c99 ×1
clojure ×1
containers ×1
d ×1
free ×1
graphviz ×1
linked-list ×1
shell ×1
struct ×1