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

Объясните умственно отсталому как сделать элементарную вещь в списке - C++

Восстановить пароль Регистрация
 
zhur48
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 8
25.06.2013, 16:50     Объясните умственно отсталому как сделать элементарную вещь в списке #1
Добрый день, спасибо что зашли в эту тему.
Сколько я ни пытался лазить по разным сайтам, темам, я никак не могу понять как этим списком пользоваться. Копирую код - всё работает чудесно, но пытаюсь отредактировать под свою задачу - ничего не получается.
Объясните мне, пожалуйста:
Как при проверке истинности условия в цикле программа может занести в список значение переменной, а потом вывести эти значения по порядку на экран?

Чтобы облегчить вам труды, нашел на форуме готовый код односвязного списка. Не исключаю, что нужно-то изменить пару строк:
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
56
57
#include <iostream.h>
 
/*Ниже приведена программа,которая формирует стек из пяти целых чисел (1,2,3,4,5) 
и выводит его на экран. Функция помещения в стек по традиции называется push,а выборки pop.
Указатель для работы со стеком(top) всегда ссылается на его вершину.*/
 
//Структура - элемент стека
struct Node {
    int d;         //данные элемента структуры
    Node *p;       //Указатель для связи между структурами такого же типа
};
//-----------------------------
Node *first(int d);            //Формирование первого элемента(new)
void push(Node **top,int d);   //Добавление в стек (new)
int pop(Node **top);           //Выборка из стека  (delete)
//-----------------------------
//Главная функция
int main(){
    Node *top=NULL;          //Начальная инициализация указателя-вершины нулевым адресом .       
      top=first(1);            //Создание первого элемента стека     
 
for(int i=2;i<6;i++)push(&top,i); //Добавление в стек четырёх элементов   
while(top)            //Цикл вывода на экран значений элементов стека,и удаление их из памяти.                  
{                     //Цикл длится пока на вершину(в указатель top) не попадёт нулевой адрес.
cout<<'\n';           //Переход на следующую строку в консоли.
cout<<pop(&top)<<' '; //Вывод значений возвращаемых функцией pop(...)              
}
cout<<'\n';           //Переход на следующую строку в консоли.
    return 0;       //Возвращаем,что всё норм.                  
}
//------------------------------
//Начальное формирование стека
Node *first(int d){
    Node *pv=new Node;   //Создаём элемент: структура.
    pv->d=d;             //Присваиваем полю данных значения.
    pv->p=0;             //Первый элемент даёт признак конца стека NULL нужно при выборке. 
      cout<<pv->d<<' ';    //Выводи значение поля структуры. Это тоже можно убрать.
    return pv;           //Возвращаем адрес структуры.
}
 
//Занесение в стек
void push(Node **top,int d){
Node *pv=new Node;         //Создаём элемент: структура.
pv->d=d;                   //Присваиваем полю данных значения.
pv->p=*top;                //Созданный Элемент. Связыва-ся с элементом,который сейчас на Вершине
*top=pv;                   //Созданный Элемент: помещ-тся на вершину стека вместо старой вершины
cout<<(*top)->d<<' ';      //Выводится значение Созданного элемента Этот момент можно убрать.
}
//-----------------------------
//Выборка из стека
int pop(Node **top){
int temp=(*top)->d;        //Получаем значение элемента из вершины.
Node *pv=*top;             //Получаем адрес елемента из вершины.
(*top)=(*top)->p;            //В вершину помещаем новый элемент.
delete pv;                 //Удаляем старую вершину.
return temp;               //Возвращаем значение элемента из старой вершины.
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2013, 16:50     Объясните умственно отсталому как сделать элементарную вещь в списке
Посмотрите здесь:

C++ Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача
C++ Объясните как работает this -> и ->
Странная вещь с gcc C++
C++ Товарисчи объясните пожалуйста как сделать данную задачу! (Найти наибольший элемент каждой строки А(4,6) и записать их в массив Y)
C++ как работает вставка в двусвязном списке?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 190
25.06.2013, 16:57     Объясните умственно отсталому как сделать элементарную вещь в списке #2
while(top) - делаем пока ячейка стека реальна и существует

cout<<pop(&top) - вывести на экран значение ячейки, полученное из ф-и pop. после выполнения ф-и pop, текущий э-т списка top сдвигается.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2013, 17:00     Объясните умственно отсталому как сделать элементарную вещь в списке #3
Цитата Сообщение от zhur48 Посмотреть сообщение
Копирую код - всё работает чудесно, но пытаюсь отредактировать под свою задачу - ничего не получается.
Покажите отредактированные под свою задачу варианты. Список как стек нужен?
zhur48
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 8
25.06.2013, 17:03  [ТС]     Объясните умственно отсталому как сделать элементарную вещь в списке #4
Цитата Сообщение от FireProoF Посмотреть сообщение
while(top) - делаем пока ячейка стека реальна и существует

cout<<pop(&top) - вывести на экран значение ячейки, полученное из ф-и pop. после выполнения ф-и pop, текущий э-т списка top сдвигается.
спасибо, а как занести в цикле изменяющуюся переменную в список столько раз, сколько цикл действует? То есть чтобы потом все значения вывести
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 190
25.06.2013, 17:07     Объясните умственно отсталому как сделать элементарную вещь в списке #5
этот цикл извлекает из списка значения, сдвигая при этом текущий эл-т. Т.е. заносить в это время какие-либо значения непонятно зачем нужно)
zhur48
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 8
25.06.2013, 17:09  [ТС]     Объясните умственно отсталому как сделать элементарную вещь в списке #6
Цитата Сообщение от alsav22 Посмотреть сообщение
Покажите отредактированные под свою задачу варианты. Список как стек нужен?
Под свою задачу я только экспериментировал: через if например значение верхней переменной менять, вместо того чтобы с клавиатуры вводить. Как таковых вариантов нет.
Как я понимаю, стек есть список в обратном порядке? Мне нужно FIFO, то есть чтобы в каком порядке вводилось, в таком и выводилось. Насколько я понимаю, список оно и есть?
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 190
25.06.2013, 17:09     Объясните умственно отсталому как сделать элементарную вещь в списке #7
FIFO - это стек. Стек - это частный случай списка
zer0mail
2182 / 1865 / 187
Регистрация: 03.07.2012
Сообщений: 6,631
Записей в блоге: 1
25.06.2013, 17:12     Объясните умственно отсталому как сделать элементарную вещь в списке #8
А нас учили, что FIFO- это очередь, а LIFO - стек
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 190
25.06.2013, 17:14     Объясните умственно отсталому как сделать элементарную вещь в списке #9
@zer0mail, прошу прощения за неграмотность. Был не прав.
zhur48
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 8
25.06.2013, 17:17  [ТС]     Объясните умственно отсталому как сделать элементарную вещь в списке #10
Цитата Сообщение от FireProoF Посмотреть сообщение
этот цикл извлекает из списка значения, сдвигая при этом текущий эл-т. Т.е. заносить в это время какие-либо значения непонятно зачем нужно)
мне нужно не только извлечь, но и ввести эти значения сначала) вернее, не ввести, а в зависимости от значения некоторых переменных занести в этот список некоторое значение, хранящееся в другой переменной
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2013, 17:24     Объясните умственно отсталому как сделать элементарную вещь в списке
Еще ссылки по теме:

Как определить максимум сотрудников в списке? C++
C++ Как посчитать элементы в списке
C++ Как сравнить элементы в списке?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2013, 17:24     Объясните умственно отсталому как сделать элементарную вещь в списке #11
Цитата Сообщение от zhur48 Посмотреть сообщение
Мне нужно FIFO, то есть чтобы в каком порядке вводилось, в таком и выводилось. Насколько я понимаю, список оно и есть?
Список может быть организован по разному. FIFO это очередь (первым вошёл, первым вышел).

Добавлено через 3 минуты
Цитата Сообщение от zhur48 Посмотреть сообщение
мне нужно не только извлечь, но и ввести эти значения сначала) вернее, не ввести, а в зависимости от значения некоторых переменных занести в этот список некоторое значение, хранящееся в другой переменной
Найдите любой код односвязного списка. Менять значения в узлах - не проблема.
Yandex
Объявления
25.06.2013, 17:24     Объясните умственно отсталому как сделать элементарную вещь в списке
Ответ Создать тему
Опции темы

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