Форум программистов, компьютерный форум 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.. что делать? Прикрепляйте картинки к сообщениям. подробнее

Показать сообщение отдельно
mary_fly
0 / 0 / 0
Регистрация: 14.04.2010
Сообщений: 8

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

12.08.2010, 09:02. Просмотров 795. Ответов 8
Метки (Все метки)

Здравствуйте. Помогите пожалуйста в решении задачи:
Написать программу для циклического сдвига однонаправленного списка вправо на заданное число элементов. Например: список [6, 5, 4, 3, 2, 1], циклически сдвинутый вправо на 2 элемента, преобразуется в список [2, 1, 6, 5, 4, 3].

на форуме нашла пример однонаправленного списка, немного подправила.
а как сдвинуть элементы придумать не могу.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
typedef struct NODE {
        int value;
        struct NODE * next;
} node_t;
 
node_t * new_node(int val, node_t * last){
        node_t * n;
        if ( ( n = (node_t*)malloc(sizeof(node_t)) ) == NULL )
                return NULL;
        n->value = val;
        n->next = NULL;
        if ( last )
                last->next = n;
        return n;
}
 
void print_nodes(const node_t * n){
        while ( n ){
                printf("%02d ", n->value);
                n = n->next;
        }
        printf("\n");
}
 
 
int main(void){
        node_t * first, * last;
        int needed;
 
        first = last = NULL;
        printf("Vvedite razmer spiska: ");
        if ( scanf("%d", &needed) != 1 || needed < 1 ){
                fprintf(stderr, "Wrong number!\n");
                return 0;
        }
 
        srand(time(NULL));
        while ( needed-- ){
                if ( ( last = new_node(rand() % 100, last) ) == NULL ){
                        fprintf(stderr, "Neudalos' videlit' pamyat'!\n");
                        return 0;
                }
                if ( ! first )
                        first = last;
        }
 
        printf("Ishodnii spisok:\n");
        print_nodes(first);
 
        return 0;
}
спасибо за ответы!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru