fork download
  1. // Написать (компилировать не нужно) вставку и поиск для дерева остатков
  2. // (radix tree)
  3. //
  4. // Ключом является целое беззнаковое 32-битное число. Высота дерева должна
  5. // определяться константой, т.е. в зависимости от значения этой константы мы
  6. // получаем корректно работающее дерево различной высоты.
  7. //
  8. // Дерево остатков - это дерево высотой N (степень двойки), хранящее в листьях
  9. // значения V по целочисленным беззнаковым ключам K. Пусть bits(X) - это число
  10. // всех бит в X или sizeof(X) * 8 в терминах C. Каждый узел дерева хранит
  11. // 2 ^ (bits(K) / N) (`^` - возведение в степень) указателей на узел следующего
  12. // уровня или значение (если узел является листом). На i-м уровне указатель на
  13. // узел (i + 1)'го уровня определяется в массиве i'го узла как (при адресации, в
  14. // которой менее значимые биты ключа определяют индексы в верхних уровнях дерева).
  15.  
  16. #define N 4
  17.  
  18. typedef struct {
  19. // ......
  20. } RtNode;
  21.  
  22. RtNode rt_root;
  23.  
  24. void rt_insert(unsigned int key, void *val) {
  25. // ...
  26. }
  27.  
  28. /* Returns NULL if there is no element with such key. */
  29. void *rt_lookup(unsigned int key) {
  30. // ...
  31. }
  32.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.c: In function ‘rt_lookup’:
prog.c:31:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
stdout
Standard output is empty