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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ float обнуляет дробную часть http://www.cyberforum.ru/cpp-beginners/thread158806.html
Здравствуйте всем! Я новичок. Поиском не нашел ничего подобного. Проблема в следующем: В функцию myfunc по параметру приходит long переменная. Когда она внутри функции делится на 60 и присваивается в переменную float, то дробная часть все время равна нулю. void myfunc (long x) {
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: int pov; int s=0; int q=1;
C++ вопрос по Страуструпу http://www.cyberforum.ru/cpp-beginners/thread158696.html
здраствуйте, вопрос тем кто читал Страуструп, там есть глава по названию "Калькулятор" там описан алгоритм который я до конца не понял, кто небуд может мне обяснить, или если есть код этой проги в инете дайте сылку, я смогу по коду разобратся. заранее спсибо.
C++ connect QT to NetBeans 6.9 не могу запустить скомпиленый файл.. когда он его запускает вылетает ошибка что не может найти файт QTCorer4.dll.. что делать? Прикрепляйте картинки к сообщениям. подробнее

Показать сообщение отдельно
accept
4817 / 3237 / 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() просто применяет переданную ей функцию к переданному ей списку переданное количество раз
 
Текущее время: 05:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru