Preparing changes for btree add (defs + add stub).
parent
3b05dff9a2
commit
934db013a2
|
@ -132,6 +132,38 @@ pub fn bipartition(arr: []u64, t1: u64, t2: u64, v: u64) u64 {
|
||||||
return x2;
|
return x2;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() !void {
|
const BTree = struct {
|
||||||
print("Hello World {}!!!\n", .{1});
|
n: u64,
|
||||||
|
values: []u64,
|
||||||
|
children: []?BTree,
|
||||||
|
};
|
||||||
|
|
||||||
|
pub fn BTree_Add(q: *BTree, v: u64) *BTree {
|
||||||
|
if (q.n <= q.values.len) {
|
||||||
|
const idx = bipartition(q.values, 0, q.n, v);
|
||||||
|
std.log.warn("Idx {}", idx);
|
||||||
|
const i: u64 = q.n;
|
||||||
|
while (i >= idx) {
|
||||||
|
q.values[idx + 1] = q.values[idx];
|
||||||
|
// TODO add here moving children pointers
|
||||||
|
idx -= 1;
|
||||||
|
}
|
||||||
|
q.n += 1;
|
||||||
|
q.values[idx] = v;
|
||||||
|
// TODO insert here element
|
||||||
|
}
|
||||||
|
return q;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn main() !void {
|
||||||
|
const numbers = [_]u64{ 1, 2, 3 };
|
||||||
|
const numbers_sl: []const u64 = &numbers;
|
||||||
|
const children = [_]?BTree{ null, null, null, null };
|
||||||
|
const q = BTree{
|
||||||
|
.n = 0,
|
||||||
|
.values = numbers_sl,
|
||||||
|
.children = &children,
|
||||||
|
};
|
||||||
|
BTree_Add(q, 4);
|
||||||
|
print("Hello World {}!!!\n", .{q.values});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue