libhash_ex
This commit is contained in:
parent
e74c9a80ae
commit
5162d972fb
|
@ -0,0 +1,7 @@
|
|||
syntax: glob
|
||||
*.o
|
||||
*.swp
|
||||
*.gch
|
||||
*.gcno
|
||||
*.out
|
||||
callgrind.out.*
|
|
@ -0,0 +1,55 @@
|
|||
#include <stdio.h>
|
||||
|
||||
/* Computes the length of Collatz sequences */
|
||||
|
||||
unsigned int
|
||||
step (unsigned int x)
|
||||
{
|
||||
if (x % 2 == 0)
|
||||
{
|
||||
return (x / 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
return (3 * x + 1);
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int
|
||||
nseq (unsigned int x0)
|
||||
{
|
||||
unsigned int i = 1, x;
|
||||
|
||||
if (x0 == 1 || x0 == 0)
|
||||
return i;
|
||||
|
||||
x = step (x0);
|
||||
|
||||
while (x != 1 && x != 0)
|
||||
{
|
||||
x = step (x);
|
||||
i++;
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
unsigned int i, m = 0, im = 0;
|
||||
|
||||
for (i = 1; i < 500000; i++)
|
||||
{
|
||||
unsigned int k = nseq (i);
|
||||
|
||||
if (k > m)
|
||||
{
|
||||
m = k;
|
||||
im = i;
|
||||
printf ("sequence length = %u for %u\n", m, im);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
CC=cc
|
||||
CXX=c++
|
||||
INCLUDE=-I$(HOME)/projects/include
|
||||
KOLAN_PROJECTS=$(HOME)/projects
|
||||
KOLAN_INCLUDE=$(KOLAN_PROJECTS)/include
|
||||
|
||||
# Compiler flags
|
||||
# if mode variable is empty, setting debug build mode
|
||||
ifeq ($(mode),)
|
||||
mode = debug
|
||||
endif
|
||||
ifeq ($(mode),debug)
|
||||
CFLAGS = -O0 -g -std=c99 -pedantic -Wextra -Wconversion
|
||||
LDFLAGS =
|
||||
endif
|
||||
ifeq ($(mode),profile)
|
||||
CFLAGS = -O0 -g -p -ftest-coverage -Wcoverage-mismatch
|
||||
LDFLAGS = -g -p
|
||||
endif
|
||||
ifeq ($(mode),develop)
|
||||
CFLAGS += -O2 -g
|
||||
LDFLAGS += -O1
|
||||
endif
|
||||
ifeq ($(mode),release)
|
||||
CFLAGS += -O2
|
||||
LDFLAGS += -O1
|
||||
endif
|
||||
|
||||
CFLAGS += -Wall
|
||||
# $(shell pkg-config --cflags libhash)
|
||||
LDFLAGS += -Wall -lhash
|
||||
# $(shell pkg-config --libs libhash)
|
||||
|
||||
all: libhash_ex
|
||||
|
||||
ifneq ($(mode),debug)
|
||||
ifneq ($(mode),profile)
|
||||
ifneq ($(mode),develop)
|
||||
ifneq ($(mode),release)
|
||||
@echo "Invalid build mode."
|
||||
@echo "Please use 'make mode=release' or 'make mode=develop' or 'make mode=debug'"
|
||||
@exit 1
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
@echo ".........................."
|
||||
@echo "Building on "$(mode)" mode "
|
||||
@echo "CFLAGS=$(CFLAGS)"
|
||||
@echo "LDLAGS=$(LDFLAGS)"
|
||||
@echo ".........................."
|
||||
|
||||
%.o :
|
||||
$(CC) -c $(CFLAGS) $(LDFLAGS) $(INCLUDE) -o $@ $<
|
||||
|
||||
libhash_ex: libhash_ex.o
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) $(INCLUDE) -o $@ libhash_ex.o
|
||||
|
||||
libhash_ex.o: libhash_ex.[c,h] mpool.o
|
||||
|
||||
mpool.o: $(KOLAN_INCLUDE)/mpool.[c,h] xerror.o
|
||||
|
||||
netfuncs.o: $(KOLAN_INCLUDE)/netfuncs.[c,h]
|
||||
|
||||
listen.o: listen.[c,h] params.h xerror.o
|
||||
|
||||
cfg_files.o: cfg_files.[c,h] ssdparser.o
|
||||
|
||||
request.o: request.[c,h] ssdparser.o
|
||||
|
||||
ssdparser.o: $(KOLAN_PROJECTS)/multiexpat/inc/ssdparser.[c,h] $(KOLAN_INCLUDE)/c_const.h \
|
||||
$(KOLAN_INCLUDE)/map1251.h $(KOLAN_INCLUDE)/insys_parser/tags.h $(KOLAN_INCLUDE)/insys_parser/const.h xmalloc.o
|
||||
|
||||
xmalloc.o: $(KOLAN_INCLUDE)/xmalloc.[c,h] xerror.o
|
||||
|
||||
signals.o: signals.[c,h] xerror.o
|
||||
|
||||
xerror.o: $(KOLAN_INCLUDE)/xerror.[c,h]
|
||||
|
||||
clean:
|
||||
$(RM) *.o *.out callgrind.out.* *.gcno dataserver echo-client
|
||||
|
||||
.PHONY: all clean
|
Binary file not shown.
|
@ -0,0 +1,67 @@
|
|||
#include <hash.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <malloc.h>
|
||||
|
||||
#define MAX_CHANNUM 1024
|
||||
|
||||
u_int32_t hash_function(void *key, u_int32_t number_of_buckets)
|
||||
{
|
||||
// return hash_hash_int(key, number_of_buckets);
|
||||
|
||||
return hash_hash_string(key, number_of_buckets); // вызывается по-умолчанию, если hash_function=NULL в hash_initialise()
|
||||
}
|
||||
|
||||
int compare_keys(void *key1, void *key2)
|
||||
{
|
||||
// return hash_compare_int(key1, key2);
|
||||
|
||||
return hash_compare_string(key1, key2); // вызывается по-умолчанию, если compare_keys=NULL в hash_initialise()
|
||||
}
|
||||
|
||||
int duplicate_key(void **destination, void *source)
|
||||
{
|
||||
// hash_copy_int(destination, source);
|
||||
|
||||
hash_copy_string(destination, source); // вызывается по умолчанию, если duplicate_key=NULL в hash_initialise()
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void free_key(void *key)
|
||||
{
|
||||
void *warnings_stub = key;
|
||||
warnings_stub = warnings_stub;
|
||||
}
|
||||
|
||||
void free_value(void *value)
|
||||
{
|
||||
void *warnings_stub = value;
|
||||
warnings_stub = warnings_stub;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
u_int32_t nch = 5;
|
||||
|
||||
struct hash h;
|
||||
|
||||
//~ hash_initialise(&h, 2 * nch, NULL, NULL, NULL, NULL, NULL); // пример работы с ключом-строкой
|
||||
|
||||
hash_initialise(&h, 2 * nch, hash_function, compare_keys, duplicate_key, free_key, free_value);
|
||||
|
||||
hash_insert(&h, "Shashkin", "Kolan");
|
||||
hash_insert(&h, "Iljin", "Egor");
|
||||
hash_insert(&h, "Korsakov", "Kostya");
|
||||
hash_insert(&h, "Sinelnikov", "Alexandr");
|
||||
hash_insert(&h, "Kochetkov", "Sergey");
|
||||
hash_insert(&h, "Bovykin", "Sergey");
|
||||
hash_insert(&h, "Novikov", "Alexey");
|
||||
|
||||
char *val_ptr;
|
||||
hash_retrieve(&h, "Kochetkov", (void **)&val_ptr);
|
||||
printf("Kochetkov = %s\n", val_ptr);
|
||||
hash_deinitialise(&h);
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
[indentation]
|
||||
indent_width=8
|
||||
indent_type=1
|
||||
indent_hard_tab_width=8
|
||||
detect_indent=false
|
||||
indent_mode=2
|
||||
|
||||
[project]
|
||||
name=libhash_ex
|
||||
base_path=/home/kolan/dev/c/libhash_ex/
|
||||
|
||||
[long line marker]
|
||||
long_line_behaviour=1
|
||||
long_line_column=72
|
||||
|
||||
[files]
|
||||
current_page=2
|
||||
FILE_NAME_0=532;C;0;16;1;1;1;/home/kolan/dev/c/libhash_ex/libhash_ex.c;0
|
||||
FILE_NAME_1=204;C;0;16;1;1;1;/usr/include/hash.h;0
|
||||
FILE_NAME_2=0;Make;0;16;1;1;1;/home/kolan/dev/c/libhash_ex/Makefile;0
|
Loading…
Reference in New Issue