int main(void) { struct Node *head = NULL; addEnd(&head, 15); addEnd(&head, 25); addBegin(&head, 14); addAt(&head, 22, 1); addAt(&head, 30, 4); addAt(&head, 30,4); struct Node *itr = head; while (itr != NULL) { printf("%d\n", itr->data); itr = itr->next; } puts(""); deleteAt(&head, 6); itr = head; while (itr != NULL) { printf("%d\n", itr->data); itr = itr->next; } return 0; }
void parseFile(List ** lists){ FILE * fp = fopen("items.txt", "r"); char * pch = NULL; char line[100] = ""; int x=0; if (fp != NULL){ while (fgets(line, 100, fp) != NULL){ x=0; pch = strtok(line, "\t"); while (pch != NULL){ if (strlen(pch) > 2){ char * newNode = malloc(100); strncpy(newNode, pch, 100); if (newNode[strlen(newNode)-1] == '\n') newNode[strlen(newNode)-1] = '\0'; lists[x]->tail = addEnd(lists[x]->tail, newNode); } pch = strtok(NULL, "\t"); x++; } } fclose(fp); } }
void FormatList::addAfter(Format* r, string name) { if (name == "") { cout << "can not add empty data\n"; return; } if (r == NULL) { cout << "element after not found\n"; return; } if (r == end) { addEnd(name); } else { Format *p = new Format; if (p != NULL) { p->name = name; p->next = r->next; p->prev = r; counter++; r->next->prev = p; r->next = p; cout <<" new data added after " << r->name << " in the FormatList\n"; } else { cout << "memory error"; } } }
List(const List& kitas) { printf("copy const\n"); b = nullptr; e = nullptr; c = nullptr; for(Node* x = kitas.b; x != nullptr; x = x->next) { addEnd(x->data); } }
List& operator=(const List& kitas) { b = nullptr; e = nullptr; c = nullptr; for(Node* x = kitas.b; x != nullptr; x = x->next) { addEnd(x->data); } printf("=====\n"); return *this; }
ListElement* AddAtBeginAndEnd(ListElement* list) { list = addStart(list, 4); return addEnd(list, 2); }
int menuList() { setlocale(LC_ALL, "Rus"); node_list *begin = NULL; node_list *end = NULL; int m; while (1) { system("CLS"); cout << "Работа со списком:\t\t\t"; cout << endl << endl << endl; cout << "1. Добавить в начало." << endl << endl; cout << "2. Добавить в конец." << endl << endl; cout << "3. Добавить после элемента равного n." << endl << endl; cout << "4. Добавить перед элементом равным n." << endl << endl; cout << "5. Удалить элемент равный n." << endl << endl; cout << "6. Сортировка." << endl << endl; cout << "7. Вывести список." << endl << endl; cout << "0. Выход." << endl << endl; cout << "Выберете пункт меню: "; while (scanIntVal(m) || (m < 0) || (m > 7)) { cout << "\nОшибка. Попробуйте еще раз.\n\nВыберете пункт меню: "; } cout << endl; switch (m) { case 1: { int a; while (1) { cout << "Введите значение: "; if (scanIntVal(a)) { cout << "\nОшибка. Попробовать еще раз? (Y/N) -->"; if (scanYesNo()) { continue; } else { break; } } addBegin(a, begin, end); cout << "Добавить еще значение? (Y/N) -->"; if (!scanYesNo()) { break; } } break; } case 2: { int a; while (1) { cout << "Введите значение: "; if (scanIntVal(a)) { cout << "\nОшибка. Попробовать еще раз? (Y/N) -->"; if (scanYesNo()) { continue; } else { break; } } addEnd(a, begin, end); cout << "Добавить еще значение? (Y/N) -->"; if (!scanYesNo()) { break; } } break; } case 3: { int n, val; while (1) { cout << "Введите значение, которое нужно добавить: "; if (scanIntVal(val)) { cout << "\nОшибка. Попробовать еще раз? (Y/N) -->"; if (scanYesNo()) { continue; } else { break; } } cout << "Введите значение, после которого добавить: "; if (scanIntVal(n)) { cout << "\nОшибка. Попробовать еще раз? (Y/N) -->"; if (scanYesNo()) { continue; } else { break; } } if (addAfter(val, n, begin, end)) { cout << endl << endl << "Список пуст или такого элемента в нем нет." << endl << endl; cout << "1. Добавить в начало." << endl << endl; cout << "2. Добавить в конец." << endl << endl; cout << "3. Попробовать еще раз." << endl << endl; cout << "0. Ничего не делать." << endl << endl; cout << "Выберете пункт меню: "; int q; while (scanIntVal(q) || (q < 0) || (q > 3)) { cout << "\nОшибка. Попробуйте еще раз.\n\nВыберете пункт меню: "; } cout << endl; switch (q) { case 1: { addBegin(val, begin, end); break; } case 2: { addEnd(val, begin, end); break; } case 3: { continue; break; } default: { } } break; } else { break; } } break; } case 4: { int n, val; while (1) { cout << "Введите значение, которое нужно добавить: "; if (scanIntVal(val)) { cout << "\nОшибка. Попробовать еще раз? (Y/N) -->"; if (scanYesNo()) { continue; } else { break; } } cout << "Введите значение, перед которым добавить: "; if (scanIntVal(n)) { cout << "\nОшибка. Попробовать еще раз? (Y/N) -->"; if (scanYesNo()) { continue; } else { break; } } if (addBefore(val, n, begin, end)) { cout << endl << endl << "Список пуст или такого элемента в нем нет." << endl << endl; cout << "1. Добавить в начало." << endl << endl; cout << "2. Добавить в конец." << endl << endl; cout << "3. Попробовать еще раз." << endl << endl; cout << "0. Ничего не делать." << endl << endl; cout << "Выберете пункт меню: "; int q; while (scanIntVal(q) || (q < 0) || (q > 3)) { cout << "\nОшибка. Попробуйте еще раз.\n\nВыберете пункт меню: "; } cout << endl; switch (q) { case 1: { addBegin(val, begin, end); break; } case 2: { addEnd(val, begin, end); break; } case 3: { continue; break; } default: { } } break; } else { break; } } break; } case 5: { if (!begin) { print(begin); system("PAUSE"); break; } int a; while (1) { cout << "Введите значение, которое нужно удалить: "; if (scanIntVal(a)) { cout << "\nОшибка. Попробовать еще раз? (Y/N) -->"; if (scanYesNo()) { continue; } else { break; } } if (erase(a, begin, end)) { cout << "Такого значение в списке нет. Попробовать еще раз? (Y/N) -->"; if (scanYesNo()) { continue; } else { break; } } cout << "Элемент со значением " << a << " удален." << endl << endl; cout << "Удалить еще? (Y/N) -->"; if (!scanYesNo()) { break; } } break; } case 6: { if (!sorting(begin, end)) { cout << "Отсортированный список:" << endl << endl; print(begin); } else { cout << "Ошибка!! Добавьте больше элементов." << endl << endl; } system("PAUSE"); break; } case 7: { print(begin); system("PAUSE"); break; } default: { while (begin) { node_list *temp = (*begin).next; delete begin; begin = temp; } return 0; } } } }