Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сдвиг списка в право 
:(
    Опции темы
nimferus
Дата 13.12.2010, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 9.8.2010

Репутация: нет
Всего: нет



Добрый день. Работаю со списками. Возникла такая проблема, никак не могу сделать сдвиг в право.
Вот так реализую сам список:
Код

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <malloc.h>

#define QUE struct que            
QUE {
    int info;
    QUE *next;
};

void insert(QUE **q, int item);
void display(QUE * q);
QUE * create_list();
QUE *q = NULL;

void display(QUE * q) {
    QUE * current = q;
    printf("\nLIST=");
    if (current) {
        while(current) {
            printf("%d-->", current->info);
            current = current ->next;
        }
        printf("NULL");
    }
    else
        printf("pustoy");
    printf("\n");
}
QUE * create_list() {
    QUE * list=NULL;
    int done=1,
    info, c;
    printf("Creation of list:\n");
    while(done)
    {
        printf("Add new element? (Y/N)");
        c = getch();
        c = toupper(c);
        switch(c) {
            case 'Y':    printf("\n Element=");
                        scanf("%d", &info);
                        insert(&q, info);
                        break;
            case 'N':    done = 0;
                        break;
        }
    }
    return (list);
}
void insert (QUE **q, int item) {
    QUE *current=*q;
    QUE *previous=0;
    QUE *new_node;
    while(current) {
        previous=current;
        current=current->next;
    }
    new_node=(QUE*) malloc (sizeof (QUE));
    new_node->info=item;
    if (previous) {
        new_node->next=previous->next;
        previous->next=new_node;
    }
    else {
        *q=new_node;
        (*q)->next=0;
    }
}
int main() {
    create_list();
    display(q);

    getch();
    return 0;
}



Помогите пожалуйста сделать сдвиг вправо с формированием нового списка, то есть если тут я формирую список q, то мне нужен другой список, который будет списком q сдвинутым на 1 элемент вправо.
Заранее большое спасибо!.
PM MAIL   Вверх
Чoо
Дата 13.12.2010, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



а при "сдвиге" элемент списка терять или циклически переносить?

Добавлено через 2 минуты и 19 секунд
вообще что нужно: из списка 
Код

абвгдежзи

получить
Код

бвгдежзиа

?

Добавлено через 4 минуты и 3 секунды
точнее
Код

иабвгдежз



--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
nimferus
Дата 13.12.2010, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 9.8.2010

Репутация: нет
Всего: нет



не, значения просто числа, например список: 1, 2, 3, 4, 5
нужно получить: 5, 1, 2, 3, 4
PM MAIL   Вверх
Чoо
Дата 13.12.2010, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



бегло глянул код. Я так понимаю, список не закольцован. Если сделать список кольцевым, то особо ни чего писать не понадобится, для сдвига. Если понадобятся сдвиги в обе стороны, то сформировать кольцевой двусвязный список.
Если же решение нужно именно для такого списка, последний элемент которого имеет next=0, то для сдвига придется обходить список.


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0859 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.