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

Поменять местами две половины очереди без использования дополнительной памяти - C++

Восстановить пароль Регистрация
 
gor
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 4
06.06.2011, 19:15     Поменять местами две половины очереди без использования дополнительной памяти #1
поменять местами две половины очереди местами без использования дополнительной памяти(new)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2011, 19:15     Поменять местами две половины очереди без использования дополнительной памяти
Посмотрите здесь:

Столбцы левой половины массива поменять местами со столбцами правой половины C++
Поменять местами 2 половины строки // С++ C++
Поменять местами первые слова (слова разделены пробелами) заданных строк, без использования процедур C++
Поменять местами значения двух переменных без использования дополнительной переменной C++
C++ Поменять местами значения двух переменных, не используя дополнительной
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
06.06.2011, 19:22     Поменять местами две половины очереди без использования дополнительной памяти #2
функцию swap напиши и меняй наздоровье, без new
gor
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 4
06.06.2011, 20:32  [ТС]     Поменять местами две половины очереди без использования дополнительной памяти #3
Цитата Сообщение от pito211 Посмотреть сообщение
функцию swap напиши и меняй наздоровье, без new
через стандартную элементы очереди не меняются
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
06.06.2011, 20:50     Поменять местами две половины очереди без использования дополнительной памяти #4
Цитата Сообщение от gor Посмотреть сообщение
элементы очереди
Сильно зависит от того, что Вы "очередью" называете... Вот пример с массивом
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>
 
void dump(const int * arr, size_t size) { while ( size-- ) printf("%d ", *arr++); }
 
#define SIZE 10
int main(void){
    int arr[SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, buf[SIZE];
    
    printf("Before: ");
    dump(arr, SIZE);
    
    memcpy(buf, arr, sizeof(int) * SIZE / 2);
    memmove(arr, arr + SIZE / 2, sizeof(int) * SIZE / 2);
    memcpy(arr + SIZE / 2, buf, sizeof(int) * SIZE / 2);
    
    printf("\nAfter:  ");
    dump(arr, SIZE);
    
    printf("\n");
    return 0;
}
gor
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 4
06.06.2011, 22:29  [ТС]     Поменять местами две половины очереди без использования дополнительной памяти #5
Цитата Сообщение от easybudda Посмотреть сообщение
Сильно зависит от того, что Вы "очередью" называете... Вот пример с массивом
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>
 
void dump(const int * arr, size_t size) { while ( size-- ) printf("%d ", *arr++); }
 
#define SIZE 10
int main(void){
    int arr[SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, buf[SIZE];
    
    printf("Before: ");
    dump(arr, SIZE);
    
    memcpy(buf, arr, sizeof(int) * SIZE / 2);
    memmove(arr, arr + SIZE / 2, sizeof(int) * SIZE / 2);
    memcpy(arr + SIZE / 2, buf, sizeof(int) * SIZE / 2);
    
    printf("\nAfter:  ");
    dump(arr, SIZE);
    
    printf("\n");
    return 0;
}
надо динамическая структура очередь...через указатели

Добавлено через 1 час 8 минут
спасибо,разобрался.тема закрыта
Yandex
Объявления
06.06.2011, 22:29     Поменять местами две половины очереди без использования дополнительной памяти
Ответ Создать тему
Опции темы

Текущее время: 17:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru