матрица организованная в виде списка

Тема в разделе "Общие вопросы по С и С++", создана пользователем kentochek, 11 мар 2006.

Статус темы:
Закрыта.
  1. kentochek

    kentochek Гость

    Помогите, кто может!!!!!!!!!!!!. Как организовать матрицу размера MxN в виде связного списка, а затем её повернуть на 90 градусов. Главная проблема состоит в том, каким образом определенному элементу текущей матрицы присвоить новый номер полученной матрицы. Все операции нужно производить с помощью указателей.
     
  2. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    какое-то невнятное и само задание, и способ решения. Что должно быть на выходе? Если список, то причем здесь индексы? Индексы как раз проблемы не составляют -
    (i,j)->(j, m-i-1).
    Это если я правильно понял условие и матрица (M=2, N=3)
    ABC
    DEF
    перейдет в матрицу
    DA
    EB
    FC

    А вот как это преобразование выполнить в списке?
    Можно , например, представить оригинальную матрицу по столбцам:
    A-D-B-E-C-F
    Тогда надо будет только изменить порядок на обратный в группах по М элементов. Результат считать как матрицу, представленную в списке по строкам.
     
  3. kentochek

    kentochek Гость

    Задание ты понял правильно. И как раз проблема состоит в том, как выполнить преобразование (поворот) в самом списке, не нарушая структуру самого списка, т.е. если был элемент (1,2) то он после преобразования должен иметь индекс (2,1) если поворачиваем против часовой стрелки. Если есть какие-то идеи по реализации, то если не сложно напиши
     
  4. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Ну я бы в свои студенческие годы взялся поспорить с преподом что с такой формулировкой манипуляций со списком не требуется вообще.
    Т.е. программа (по его мнению) состоит из этапов:
    1. Ввод матрицы в обычном виде
    2. Пробразование ее в список
    3. Манипуляция со списком
    4. Вывод результирующей матрицы

    На самом деле список с результирующей матрицей можно получить за один проход на этапе 2, заявив что это способ представления такой.

    Если же способ представления меняться не должен, то потребуются всякие извращения. В нашем случае список ABCDEF должен превратится в DAEBFC. Тупое решение в лоб - вытягивать в начало списка элементы по новому порядку. Т.е. какой элемент должен стоять в новой матрице в (0, 0)? Это (М-1,0) из старой, находим его в списке и перемещаем в начало.
    Вот тут сложный вопрос - если в списке будут только значения из матрицы, то индексы мы можем определять только по положению элемента, значит вместо передвинутого надо вставлять какую-нибудь пустышку, чтобы порядок не менялся. Потом все пустышки не зыбыть удалить. Второй вариант - просто хранить координаты вместе со значением. Есть и третий вариант - каким-то образом учитывать уже перемещенные элементы, отсчитывая позицию, но тут уже надо повозится с деталями.
     
Загрузка...
Похожие Темы - матрица организованная виде
  1. fatpunk
    Ответов:
    0
    Просмотров:
    1.136
  2. нини
    Ответов:
    3
    Просмотров:
    1.744
  3. phobiaxx
    Ответов:
    1
    Просмотров:
    1.277
  4. vladis222
    Ответов:
    1
    Просмотров:
    1.285
  5. LudmilaUt
    Ответов:
    0
    Просмотров:
    1.383
Статус темы:
Закрыта.

Поделиться этой страницей