Задача считалочка. Кальсина Яна Б43.#20
Conversation
| printf("Введите n и m через пробел\n"); | ||
| int n = 0; | ||
| int m = 0; | ||
| scanf("%d %d", &n, &m); |
There was a problem hiding this comment.
Вообще можно просто два scanf попросить, он их прочитает, если бы они были через пробел или через перенос строки (\n)
| int counter = 0; | ||
| while (1) { | ||
| if (counter == index - 1) { | ||
| ListNode* newNode = calloc(1, sizeof(ListNode)); | ||
| newNode->value = value; | ||
| newNode->next = current->next; | ||
| current->next = newNode; | ||
| return true; | ||
| } | ||
| current = current->next; | ||
| counter++; |
There was a problem hiding this comment.
Тут можно написать for (int i = 0;;i++), получится то же самое
| return new; | ||
| } | ||
|
|
||
| bool insert(List* list, int index, int value) |
There was a problem hiding this comment.
Вообще при добавлении можно не использовать список, в задании же всё равно заполняются последовательно
| ListNode* current = list->head; | ||
| while (current->next != elemToRemove) { | ||
| current = current->next; | ||
| } |
There was a problem hiding this comment.
Вообще чтобы вот так не искать хвост, его можно хранить в самом списке
| int findTheSafeIndex(List* list, int m) | ||
| { | ||
| ListNode* current = list->head; | ||
| ListNode* prev = NULL; | ||
| while (!oneElement(list)) { | ||
| for (int i = 0; i < m; i++) { | ||
| prev = current; | ||
| current = current->next; | ||
| } | ||
| if (current == list->head) { | ||
| list->head = current->next; | ||
| } | ||
|
|
||
| prev->next = current->next; | ||
| free(current); | ||
| current = prev->next; | ||
| } | ||
| return list->head->value; | ||
| } |
There was a problem hiding this comment.
То есть индексы вообще не нужны? Тут они нигде не упоминаются, вообще тогда можно сделать так, чтобы removeElement принимал в себя ListNode, и удалял его из списка
| /* | ||
| * функция вывода списка в консоль | ||
| * принимает только указаетль на список, | ||
| * ничего не возвращает | ||
| * печатает элементы списка через пробел | ||
| * в случае переданного пустого или несуществующего списка сообщает об этом | ||
| * пользователю | ||
| */ | ||
| void printList(List* list); | ||
|
|
||
| /* | ||
| * функция, возвращающая длину списка | ||
| * принимает на вход указатель на список | ||
| * проходится по всем элементам | ||
| * возвращает его длину | ||
| */ | ||
| int getLength(List* list); |
| insert(list, i - 1, i); | ||
| } | ||
| printf("%d\n", findTheSafeIndex(list, m)); | ||
| return 0; |
There was a problem hiding this comment.
Список (ну или то что от него осталось) не удаляется при выходе
Добавила все файлы к задаче и cmake