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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dimon1984
40 / 38 / 0
Регистрация: 22.01.2011
Сообщений: 670
#1

Список - C++

07.03.2011, 13:09. Просмотров 349. Ответов 5
Метки нет (Все метки)

Подскажите пожалуйста, как сделать связанный список? Чтобы новый элемент добавлялся в очередь по принципу LIFO. Или хотябы натолкните на мысль.
Вот есть по принципу FIFO:
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
// список
#include <iostream>
using namespace std;
///////////////////////////////////////////////////////////
struct link   // один элемент списка
{
  int data;   // некоторые данные
  link* next; // указатель на следующую структуру
}
///////////////////////////////////////////////////////////
class linklist // список
{
  private:
    link* first;
  public:
    linklist ( )            // конструктор без параметров
      { first = NULL; }     // первого элемента пока нет
    void additem ( int d ); // добавление элемента
    void display ( );       // показ данных
};
///////////////////////////////////////////////////////////
void linklist::additem ( int d ) // добавление элемента
{
  link* newlink = new link;      // выделяем память
  newlink->data = d;             // запоминаем данные
  newlink->next = first;         // запоминаем значение first
  first = newlink;               // first теперь указывает на новый элемент
}
///////////////////////////////////////////////////////////
void linklist::display ( )
{
  link* current = first;           // начинаем с первого элемента
  while( current )                 // пока есть данные
  {
    cout << current->data << endl; // печатаем данные
    current = current->next;       // двигаемся к следующему элементу
  }
}
///////////////////////////////////////////////////////////
int main ( )
{
  linklist li;       // создаем переменную-список
 
  li.additem ( 25 ); // добавляем туда несколько чисел
  li.additem ( 36 );
  li.additem ( 49 );
  li.additem ( 64 );
 
  li.display ( );    // показываем список
 
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2011, 13:09     Список
Посмотрите здесь:

Список кортежей: сформировать по исходному списку список групп - Python
Здравствуйте. Помогите пожалуйста разобраться с заданием. Имеется список кортежей (НомерГруппы, КоличествоСтудентов), где НомерГруппы...

Есть список авто и список покупок - SQL Server
SELECT , SUM() as FROM .. group by order by 1 В таблицах поля список авто 1 Жигули 10 2 тойота ...

Список стран и список столиц этих стран - Lisp
Составить нерекурсивную программу в форме λ-вызова, откомпилировать и выполнить на SECD-машине. Результаты выполнения представить в виде...

Имеется список женихов и список невест. Объединить эти списки в список пар с учетом требований партнерам - Delphi
Имеется список женихов и список невест. Каждая запись списка содержит пол, имя, возраст, рост, вес, а также требования к партнеру:...

программа которая берет список и создает список другой из этого же списка + тот же список без последнего элемента - Prolog
надо написать программу которая берет список и создает список другой из этого же списка + тот же список без последнего элемента к...

Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят в список L1 но не входят в список L2 - Pascal
Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят в список L1 но не входят в список...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ping_rulezzz
26 / 26 / 4
Регистрация: 18.02.2011
Сообщений: 51
07.03.2011, 13:40     Список #2
C++
1
2
3
4
5
6
void linklist::additem ( int d ) // добавление элемента
{
link* newlink = new link;     
newlink->data = d;             
first->next = newlink;        
}
не проверял, но идея думаю такая должна быть
IrineK
Заблокирован
07.03.2011, 13:42     Список #3
В вашей проге процедура void linklist::display ( ) выводит именно по принципу LIFO (last in first out), т.е.: 64,49,36,25
По идее, в проге под FIFO должно выводиться: 25,36,49,64.
Похоже, что задача уже решена?

P.S. В девятой строке
C++
1
};
dimon1984
40 / 38 / 0
Регистрация: 22.01.2011
Сообщений: 670
07.03.2011, 13:58  [ТС]     Список #4
C++
1
2
3
4
5
6
void linklist::additem ( int d ) // добавление элемента
{
link* newlink = new link;     
newlink->data = d;             
first->next = newlink;        
}
вроде немного неправильно, потому что здесь first->next = newlink; обращение к данным ещё не инициализированного обьекта
Похоже, что задача уже решена?
как это понять? Правильно, должно выводится 25,36,49,64
ping_rulezzz
26 / 26 / 4
Регистрация: 18.02.2011
Сообщений: 51
07.03.2011, 14:07     Список #5
предыдущая идея ен прокатила, так что вот
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
58
59
#include "stdafx.h"
#include <iostream>
using namespace std;
///////////////////////////////////////////////////////////
struct link   // один элемент списка
{
  int data;   // некоторые данные
  link* next; // указатель на следующую структуру
};
///////////////////////////////////////////////////////////
class linklist // список
{
  private:
    link* first;
  public:
    linklist ( )            // конструктор без параметров
      { first = new link;
        first->next = NULL;}     // первого элемента пока нет
    void additem ( int d ); // добавление элемента
    void display ( );       // показ данных
};
///////////////////////////////////////////////////////////
void linklist::additem ( int d ) // добавление элемента
{
  link* newlink = new link;      // выделяем память
  newlink->next = NULL;
  link* current = first;    
  while(current->next)                 // пока есть данные
  {
    current = current->next;       // двигаемся к следующему элементу
  }
    current->data = d;
    current->next = newlink;
  
}
///////////////////////////////////////////////////////////
void linklist::display ( )
{
  link* current = first;           // начинаем с первого элемента
  while( current->next)                 // пока есть данные
  {
    cout << current->data << endl; // печатаем данные
    current = current->next;       // двигаемся к следующему элементу
  }
}
///////////////////////////////////////////////////////////
int main ( )
{
  linklist li;       // создаем переменную-список
 
  li.additem ( 25 ); // добавляем туда несколько чисел
  li.additem ( 36 );
  li.additem ( 49 );
  li.additem ( 64 );
 
  li.display ( );    // показываем список
 
  return 0;
}
ЗЫ вы привели пример по принципу LIFO, а не FIFO)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2011, 14:17     Список
Еще ссылки по теме:

Создать список L, включив в него по одному разу элементы, которые входят в список L1, но не входят в список L2 - C (СИ)
Описать процедуру, которая формирует список L, включив в него по одному разу элементы, которые входят в список L1, но не входят в...

Создать список L3 из элементов, входящих и в список L1 и в список L2 - C++
создать список л3 из элементов входящих и в список л1 и в список л2

Составить базу данных об учащихся. Составить программу позволяющую выводить полный список учащихся, список выбравших предмет, список лучших учеников - Pascal
Составить базу данных об учащихся, предусмотрев поля: Ф.И.О., предметы по выбору, экзаменационные оценки по каждому из них. Составить...

3 класса: список, стек(как список), очередь(как список) - C++
препод дал задание: написать 3 класса (список, стек, очередь), методы: вывод, добавление, удаление. Использовать при обращении указатель...


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

Или воспользуйтесь поиском по форуму:
dimon1984
40 / 38 / 0
Регистрация: 22.01.2011
Сообщений: 670
07.03.2011, 14:17  [ТС]     Список #6
постоянно путаю их .
Даже перед тем как написать, специально посмотрел определение этих понятий, но перепутал
обычно редко такие ошибки допускаю
Yandex
Объявления
07.03.2011, 14:17     Список
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru