#include #include #include using namespace std; struct node { string val; node *next, *prev; }; struct DLCL { node *head, *tail; void init() { head = NULL; tail = NULL; } void insertFirst(string x) { node *new_node = new node; new_node->val = x; if(head == NULL) { head = new_node; head->next = head; head->prev = head; tail = head; } else { new_node->next = head; head->prev = new_node; head = new_node; head->prev = tail; } } void insertLast(string x) { node *new_node = new node; new_node->val = x; if(head == NULL) { head = new_node; head->next = head; head->prev = head; tail = head; } else { tail->next = new_node; new_node->next = head; head->prev = new_node; new_node->prev = tail; tail = new_node; } } void deleteFirst() { if(head != NULL) { if(head->next == head) { delete head; head = NULL; tail = NULL; } else { node *tmp = head; head = head->next; head->prev = tail; tail->next = head; delete tmp; } } } void deleteLast() { if(head != NULL) { if(head->next == head) { delete head; head = NULL; tail = NULL; } else { node *tmp = tail; tail = tail->prev; tail->next = head; head->prev = tail; delete tmp; } } } void deleteAll() { while(head != NULL) { deleteFirst(); } } void delete_node(node * tmp) { if(head != NULL) { if(head == tmp) { deleteFirst(); return; } if(tail == tmp) { deleteLast(); return; } tmp->prev->next = tmp->next; tmp->next->prev = tmp->prev; delete tmp; } } void print() { node *tmp = head; while(tmp != tail) { cout << tmp->val << " <--> "; tmp = tmp->next; } cout << tmp->val << endl; } }; void igra(DLCL & igraci, DLCL & broevi) { node * igrac = igraci.head; node * broj = broevi.head; srand(time(NULL)); int p = 0; int niza[] = {4, 2, 6}; while(igraci.head->next != igraci.head) { int sluchaen; if(p < 2) { sluchaen = niza[p++]; } else { sluchaen = 1 + (rand() % 6); } cout << "Na poteg e " << igrac->val <<", i ja frla kockat: " << sluchaen << endl; for(int i = 0; i < sluchaen; i++) { cout << broj->val << " " ; broj = broj->next; } cout << endl; cout << "Zastanuvame na pole: " << broj->val << endl; string br = ""; br += (sluchaen + '0'); if(broj->val == br) { cout << "Ovoj igrac ostanuva vo igra" << endl; node *tmp = broj; broj = broj->next; broevi.delete_node(tmp); igrac = igrac->next; } else { cout << "Igracot ispagja od igrata" << endl; node *tmp = igrac; igrac = igrac->next; igraci.delete_node(tmp); broj = broj->next; } cout << endl; } cout << "Pobednik: " << igraci.head->val << endl; } int main() { DLCL igraci, broevi; igraci.init(); broevi.init(); int br_na_igraci; cin >> br_na_igraci; for(int i = 0; i < br_na_igraci; i++) { string ime; cin >> ime; igraci.insertLast(ime); } int broj_na_broevi; cin >> broj_na_broevi; for(int i = 0; i < broj_na_broevi; i++) { string broj; cin >> broj; broevi.insertLast(broj); } igra(igraci, broevi); return 0; } /** 4 Dejan Tina Marija Jane 7 1 6 5 3 4 1 5 /*/