Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Сдвиг элементов однонаправленного списка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ float обнуляет дробную часть http://www.cyberforum.ru/cpp-beginners/thread158806.html
Здравствуйте всем! Я новичок. Поиском не нашел ничего подобного. Проблема в следующем: В функцию myfunc по параметру приходит long переменная. Когда она внутри функции делится на 60 и...
C++ Русский компилятор C/С++ Подскажите компилятор C/C++ созданный в Росси. Ещё не разу невидел такого!:) Спасибо! http://www.cyberforum.ru/cpp-beginners/thread158743.html
C++ Пакетированные стандартные блоки - Вложенные стандартные блоки
Кто нибудь может объяснить на примере кода С, как это выглядит?
последовательность случайных чисел C++
Здравствуйте! Прошу прощения за возможно глупый вопрос) Проблема в том, что в программе #include <iostream> #include <math.h> #include <stdlib.h> #include <time.h> int main(){ t: ...
C++ вопрос по Страуструпу http://www.cyberforum.ru/cpp-beginners/thread158696.html
здраствуйте, вопрос тем кто читал Страуструп, там есть глава по названию "Калькулятор" там описан алгоритм который я до конца не понял, кто небуд может мне обяснить, или если есть код этой проги в...
C++ connect QT to NetBeans 6.9 не могу запустить скомпиленый файл.. когда он его запускает вылетает ошибка что не может найти файт QTCorer4.dll.. что делать? Прикрепляйте картинки к сообщениям. подробнее

Показать сообщение отдельно
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
13.08.2010, 06:33
C
1
count != n
лучше заменить на count < n, это делает код яснее

C
1
2
3
4
5
6
7
8
while ( tail && count != n){
                                if((n-1) == count)
                                {       
                                        tail->next = NULL;
                                }
                tail = tail->next;
                                count++;
        }
C
1
2
3
4
    tail = first;
    for (count = 0; tail != NULL && count < n; tail = tail->next, count++)
        if(count == n - 1)
            tail->next = NULL;
функция сдвига на несколько шагов должна принимать указатель на функцию одного шага
так можно написать функцию сдвига влево и функция сдвига на несколько шагов сможет двигать в любую сторону

C
1
2
   rotate_list(&head, &tail, 3, &rrot_one_list);
   rotate_list(&head, &tail, 2, &lrot_one_list);
C
1
2
int rotate_list(node_t **head, node_t **tail, size_t count,
                int (*direct)(node_t **head, node_t **tail, int value);
у тебя там функция циклического сдвига возвращает указатель на последний добавленный элемент
вместо этого нужно возвращать код завершения функции (удалось ли добавить элемент, ноль для истины, остальные - коды для ошибок -1, -2, -3 ...), а указатель на последний добавленный записывать в *tail
так, при возврате 0, ты будешь знать, что tail указывает на последний добавленный
при этом тебе не будет нужно устанавливать эти указатели за пределами функции

rotate_list() просто применяет переданную ей функцию к переданному ей списку переданное количество раз
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru