REGTYPE* randomize(void) { REGTYPE *currentPos, *currentPrev, *first, *prevTemp; first = add_first(malloc(sizeof(REGTYPE)),(rand() % 100)); currentPos = first; currentPrev = first; prevTemp = NULL; int i = 0; for (i = 0; i < MAX; i++) { currentPos->next = malloc(sizeof(REGTYPE)); prevTemp = currentPos->next; printf("--- Index %i\n", i); printf("This: %p\n", currentPos); printf("Num: %i (random)\n", currentPos->number); printf("Next: %p\n", currentPos->next); printf("Prev: %p\n", currentPos->prev); currentPos = currentPos->next; currentPos->number = rand() % 100 + 1; currentPos->prev = currentPrev; currentPrev = prevTemp; } return first; }
int main(void) { struct liste l; new_list(&l); add_first(1, &l); show_list(&l); printf( "#1\n" ); add_tail(2, &l); add_first(-10, &l); show_list(&l); printf( "#2\n" ); list_remove_tail(&l); show_list(&l); return 0; }
int main () { int t; while (scanf("%i%*c", &t) != EOF) { while (t) { struct list pila; pila.head = NULL; pila.size = 0; char str[128]; gets(str); int len = strlen(str); int i; char p; int flag = 1; for (i = 0; i < len; i ++) { p = str[i]; if (is_empty(&pila) && (p == ')' || p == ']')) { flag = 0; printf("No\n"); break; }else if (p == '(' || p == '[') { add_first(&pila, p); }else if (p == ')') { if (get_first(&pila) == '(') remove_first(&pila); else { flag = 0; printf("No\n"); break; } }else if (p == ']') { if (get_first(&pila) == '[') remove_first(&pila); else { flag = 0; printf("No\n"); break; } } } if (flag) { if (is_empty(&pila)) { printf("Yes\n"); }else { printf("No\n"); } } t--; } } return 0; }
inline bool st_search(StateParser & stparser, const char * s) { if ( stparser.empty()) { return false; } StatesValue stval(stparser.states(), stparser.nb_capture()); // #ifdef DISPLAY_TRACE // display_states(stval, stparser.root()); // #endif st_step_range_list_t lst; st_step_range_list_t l1; add_first(lst, l1, stparser.root()); if (l1.empty() && lst.empty()) { return false; } utf8_consumer consumer(s); st_step_range_list_t l2; bool res = false; unsigned count = 1; while (consumer.valid()) { #ifdef DISPLAY_TRACE std::cout << "\033[01;31mc: '" << utf8_char(consumer.getc()) << "'\033[0m\n"; #endif for (st_step_range_iterator_t first = lst.begin(), last = lst.end(); first != last; ++first) { if (stval.get_num_at(first->first) != count) { l1.push_back(*first); } } if (l1.empty()) { return false; } l2.clear(); if ((res = st_step(l1, l2, stval, consumer.bumpc(), consumer, ++count))) { break ; } l1.swap(l2); } if (res) { return true; } if (consumer.valid()) { return false; } for (st_step_range_iterator_t first = l1.begin(), last = l1.end(); first != last; ++first) { if (first->first->type == LAST) { return true; } } return false; }
inline void add_first(st_step_range_list_t & l, st_step_range_list_t & lfirst, const State * st) { if (st->is_split()) { if (st->out1) { add_first(l, lfirst, st->out1); } if (st->out2) { add_first(l, lfirst, st->out2); } } else if (st->is_cap()) { if (st->out1) { add_first(l, lfirst, st->out1); } } else if (st->type == FIRST) { if (st->out1) { add_first(lfirst, lfirst, st->out1); } } else { l.push_back(st_step_elem_t(st, 0)); } }
//добавление узла в н-ную позицию NODE* add_n(NODE* list) { if (!list) { system("cls"); printf_s("\n Список пуст, запись будет осуществлена в начало\n\n "); system("pause"); list = add_first(list); } else { int n = get_n(amt(list), "Введите номер позиции, в которую следует добавить запись", "add"); if (n == 1) list = add_first(list); else if (n == amt(list) + 1) list = add_last(list); else { NODE* nta = fill_fields(); NODE *tmp = list; int i; for (i = 1; i < n - 1; i++) tmp = tmp->next; nta->next = tmp->next; tmp->next->prev = nta; nta->prev = tmp; tmp->next = nta; printf_s("\n Новая запись была добавлена в позицию № %d списка\n\n ", n); system("pause"); } } return list; }
void pseudo_cmd() { FILE* f; f = fopen("input.dat", "r"); FILE* g; g = fopen("output.dat", "a"); LIST* head = NULL; char com[15]; char subcom[15]; int x = 0; while (!feof(f)) { fscanf(f, " %[^\n]s", com); // fprintf(g, "%d \n", list_length(head)); // print_all(head, g); // fprintf(g, "///////\n"); // fprintf(g, "%s\n", com); sscanf(com, "%s %d", subcom, &x); if (!strcmp(subcom, "AF")) add_first(&head, x); else if (!strcmp(subcom, "AL")) add_last(&head, x); else if (!strcmp(subcom, "DF")) del_first(&head); else if (!strcmp(subcom, "DL")) del_last(&head); else if (!strcmp(subcom, "DOOM_THE_LIST")) doom_the_list(&head); else if (!strcmp(subcom, "DE")) del_x(&head, x); else if (!strcmp(subcom, "PRINT_ALL")) print_all(head, g); else if (!strcmp(subcom, "PRINT_F")) print_first_n(head, x, g); else if (!strcmp(subcom, "PRINT_L")) print_last_n(head, x, g); } doom_the_list(&head); }
//добавление узла в конец NODE* add_last(NODE* list) { if (!list) list = add_first(list); else { NODE* nta = fill_fields(); NODE* tmp = list; while (tmp->next) tmp = tmp->next; tmp->next = nta; nta->prev = tmp; nta->next = NULL; printf_s("\n Новая запись была добавлена в конец списка\n\n "); system("pause"); } return list; }
inline bool st_exact_search(StateParser & stparser, const char * s) { if ( stparser.empty() ) { return false; } StatesValue stval(stparser.states(), stparser.nb_capture()); // #ifdef DISPLAY_TRACE // display_states(stval, stparser.root()); // #endif st_step_range_list_t l1; add_first(l1, l1, stparser.root()); if (l1.empty()) { return false; } utf8_consumer consumer(s); st_step_range_list_t l2; bool res = false; unsigned count = 1; while (consumer.valid() && !(res = st_exact_step(l1, l2, stval, consumer.bumpc(), consumer, ++count))) { #ifdef DISPLAY_TRACE std::cout << "\033[01;31mc: '" << utf8_char(consumer.getc()) << "'\033[0m\n"; #endif if (l2.empty()) { return false; } l1.swap(l2); l2.clear(); } if (consumer.valid()) { return false; } if (res) { return true; } return false; }
//меню добавления узлов с клавиатуры NODE* add(NODE* list) { int uc; do { system("cls"); printf_s("\n ДОБАВЛЕНИЕ ДАННЫХ ВРУЧНУЮ\n\n"); puts(" 1 - В начало списка"); puts(" 2 - В произвольную позицию"); puts(" 3 - В конец списка"); puts(" 0 - Назад"); uc = userchoice(); switch (uc) { case 1: list = add_first(list); break; case 2: list = add_n(list); break; case 3: list = add_last(list); break; case 0: break; default: system("cls"); printf_s("\n ОШИБКА\n"); printf_s("\n Введите существующий пункт\n\n "); system("pause"); break; } } while (uc && uc < 0 || uc > 3); return list; }
void build_menu() { Preparat p; system("color 02"); menustart: system("cls"); printf("Alegeti optiunea:\n\n"); printf("1. Adauga element la inceputul listei.\n"); printf("2. Adauga element la sfarsitul listei.\n"); printf("3. Afiseaza lista din memorie.\n"); printf("4. Afiseaza lista din fisier.\n"); printf("5. Sterge un element din lista.\n"); printf("6. Incarca lista din fisier in memorie.\n"); printf("7. Sterge toate elementele listei din memorie.\n"); printf("8. Sorteaza elementele in fisier dupa metoda Shell.\n"); printf("9. Salveaza lista in fisier.\n"); printf("10. Modifica un element din lista.\n"); printf("11. Iesire din program.\n\n"); int option; scanf("%d", &option); system("cls"); switch (option) { case 1: printf("Nume preparat:"); scanf("%s", &p.nume); printf("Pret:"); scanf("%d", &p.pret); printf("Este nevoie de prescriptie medicala? (Da/Nu):"); scanf("%s", &p.pr_med); printf("Tip Preperat:"); scanf("%s", &p.tip); add_first(p); goto menustart; break; case 2: printf("Nume preparat:"); scanf("%s", &p.nume); printf("Pret:"); scanf("%d", &p.pret); printf("Este nevoie de prescriptie medicala? (Da/Nu):"); scanf("%s", &p.pr_med); printf("Tip Preperat:"); scanf("%s", &p.tip); add_last(p); goto menustart; break; case 3: display(0); getch(); goto menustart; break; case 4: display(1); getch(); goto menustart; break; case 5: printf("Indicati indexul elementului pentru a fi sters:"); int index; scanf("%d", &index); delete_at(index); getch(); goto menustart; break; case 6: read_from_file(); goto menustart; break; case 7: clear_list(); printf("Sters cu success!!"); getch(); goto menustart; break; case 8: file_shell_sort(); getch(); goto menustart; break; case 9: save_to_file(); goto menustart; break; case 10: printf("\nDati indexul elementului ce necesita modificare:"); int ind; scanf("%d", &ind); edit_at(ind); goto menustart; case 11: exit(0); break; default: printf("Optiune indicata gresit."); break; } }