#include #include #include #include "conf.h" int findConfId(ptConf confChain) { ptConf px = confChain; int max = 0; while (px -> next != NULL) { if (px -> id > max) { max = px -> id; } px = px -> next; } return max + 1; } ptConf newConfChain() { ptConf confChain = (ptConf) malloc(sizeof(tConf)); confChain -> next = NULL; return confChain; } void addConf(ptConf confChain, int id, char title[], char speaker[], int day, int month, int year) { ptConf px = confChain; while (px -> next != NULL) { px = px -> next; } px -> id = id; px -> day = day; px -> month = month; px -> year = year; strcpy(px -> title, title); strcpy(px -> speaker, speaker); px -> listeners = (ptListenerList) malloc(sizeof(tListenerList)); px -> next = (ptConf) malloc(sizeof(tConf)); px -> next -> next = NULL; } void removeConf(ptConf confChain, int id) { ptConf px = confChain; if (px -> next -> next == NULL) { free(px -> next); px -> next = NULL; } else if (px -> id == id) { px -> id = px -> next -> id; strcpy(px -> title, px -> next -> title); strcpy(px -> speaker, px -> next -> speaker); px -> day = px -> next -> day; px -> month = px -> next -> month; px -> year = px -> next -> year; ptConf tmp = px -> next; px -> next = px -> next -> next; free(tmp); } else { while (px -> next != NULL && px -> next -> id != id) { px = px -> next; } if (px -> next -> id == id) { ptConf tmp = px -> next; px -> next = px -> next -> next; free(tmp); } } } int findListenerId(ptListener listenerChain) { ptListener px = listenerChain; int max = 0; while (px -> next != NULL) { if (px -> id > max) { max = px -> id; } px = px -> next; } return max + 1; } ptListener newListenerChain() { ptListener listenerChain = (ptListener) malloc(sizeof(tListener)); listenerChain -> prev = NULL; listenerChain -> next = NULL; return listenerChain; } void addListener(ptListener listenerChain, int id, char name[], int age, int level) { ptListener px = listenerChain; while (px -> next != NULL) { px = px -> next; } px -> id = id; strcpy(px -> name, name); px -> age = age; px -> level = level; px -> confs = (ptConfList) malloc(sizeof(tConfList)); px -> next = (ptListener) malloc(sizeof(tListener)); px -> next -> next = NULL; px -> next -> prev = px; } void removeListener(ptListener listenerChain, int id) { ptListener px = listenerChain; if (px -> next -> next == NULL) { free(px -> next); px -> next = NULL; } else if (px -> id == id) { px -> id = px -> next -> id; strcpy(px -> name, px -> next -> name); px -> age = px -> next -> age; px -> level = px -> next -> level; ptListener tmp = px -> next; px -> next = px -> next -> next; px -> next -> prev = px; free(tmp); } else { while (px -> next != NULL && px -> next -> id != id) { px = px -> next; } if (px -> next -> id == id) { ptListener tmp = px -> next; px -> next = px -> next -> next; px -> next -> prev = px; free(tmp); } } }