Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2011, 14:44   #1
Veronik@
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 27
Вопрос списки

привет!помогите пожалуйста...у мя вот такое задание... Создать список с помощью массива структур. Элементы списка в обратном порядке вывести на экран....я написала код..только в обратном порядке не выводит....подскажите где ошибка..

Код:
#include "stdafx.h"
#include <stdio.h>
void main (){

// Объявление структуры
struct element{
element * prev;
int value;
element * next;
};

// Объявление статического массива
element mas[5];

// Ввод данных 
puts ("vvedite elements");
for(int i=0;i<5;i++)
scanf("%d",&mas[i].value);

// Формирование ссылок для первого элемента списка
mas[0].prev = &mas[4];
mas[0].next = &mas[1];

// Формирование ссылок для всех элементов списка 
// кроме первого и последнего
for( int i=1;i<4;i++){
mas[i].prev = &mas[i-1];
mas[i].next = &mas[i+1];
}

// Формирование ссылок для последнего элемента списка
mas[4].prev = &mas[3];
mas[4].next = &mas[0];

// Определение стартового элемента
element * start = &mas[1];

// Определение последнего элемента списка
element * end = &mas[4];

// Локальная переменная – указатель на текущий элемент
element * current = start;

// Вывод значений поля данных value
puts ("vivod");
for(int i=5;i<0;i++){
printf("%d",current->value);
current = current->next;
}
}

Последний раз редактировалось ACE Valery; 03.03.2011 в 10:04.
Veronik@ вне форума Ответить с цитированием
Старый 02.03.2011, 14:52   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Код:
for(int i=5;i<0;i++)
надо так:
Код:
for(int i = 5; i > 0; i--)
-)
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 02.03.2011, 15:35   #3
Veronik@
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 27
По умолчанию

Спасибо большое=)

я исправила цикл...только например я ввожу 4 5 6 7 8...то мне выводит 5 6 7 8 4

Код:
#include "stdafx.h"
#include <stdio.h>
void main (){

// Объявление структуры
struct element{
element * prev;
int value;
element * next;
};

// Объявление статического массива
element mas[5];

// Ввод данных 
puts ("vvedite elements");
for(int i=0;i<5;i++)
scanf("%d",&mas[i].value);

// Формирование ссылок для первого элемента списка
mas[0].prev = &mas[4];
mas[0].next = &mas[1];

// Формирование ссылок для всех элементов списка 
// кроме первого и последнего
for( int i=1;i<4;i++){
mas[i].prev = &mas[i-1];
mas[i].next = &mas[i+1];
}

// Формирование ссылок для последнего элемента списка
mas[4].prev = &mas[3];
mas[4].next = &mas[0];

// Определение стартового элемента
element * start = &mas[1];

// Определение последнего элемента списка
element * end = &mas[4];

// Локальная переменная – указатель на текущий элемент
element * current = start;

// Вывод значений поля данных value
puts ("vivod");
for(int i=5;i>0;i--){
printf("%d",current->value);
current = current->next;
}
}

Последний раз редактировалось Stilet; 15.03.2011 в 08:07.
Veronik@ вне форума Ответить с цитированием
Старый 02.03.2011, 18:20   #4
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Код:
for(int i=5;i>0;i--){
printf("%d",current->value);
current = current->next;
Насколько я понимаю, если ты перебираешь массив сверху вниз, будет логично, если ты и в цикле будешь брать предыдущий элемент, а не следующий.

И еще пара мелких замечаний.

Цитата:
Код:
void main ()
main должна быть int

Цитата:
Код:
// Определение последнего элемента списка
element * end = &mas[4];
переменная нигде не используется.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 02.03.2011, 20:43   #5
Veronik@
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 27
По умолчанию

огромное спасибо...всё работает
Veronik@ вне форума Ответить с цитированием
Старый 14.03.2011, 23:46   #6
Sergey240892
Пользователь
 
Регистрация: 28.02.2011
Сообщений: 33
По умолчанию

А как можно зделать через динамическую память ввод списка?
Sergey240892 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Списки Хорнет Паскаль, Turbo Pascal, PascalABC.NET 0 09.06.2010 09:55
(C++) списки Troi666 Помощь студентам 6 13.05.2009 00:47
Списки C++ Katya Melody Помощь студентам 0 07.05.2009 23:32
с++ списки Blizzz Общие вопросы C/C++ 3 04.12.2008 21:19