Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Список - C++

07.03.2011, 13:09. Просмотров 366. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2011, 13:09
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Список (C++):

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

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

Сформировать список из 10 книг, используя динамическую структуру данных односвязный список - C++
друзья спасайте Сформировать список из 10 книг, используя динамическую структуру данных односвязный список С++

Вводится число N. Создать список его делителей и вывести список на экран - C++
#include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;malloc.h&gt; #include&lt;string.h&gt; #include&lt;stdlib.h&gt; using namespace std; struct...

list. Cоздать список из результатов(с массивами), а потом просмотреть весь список - C++
Подскажите пожалуйста как мне создать список из моих результатов(с массивами) а потом просмотреть весь список, вот код который имеется ...

Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список - C++
спасайте Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список. Информация о работнике...

5
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;        
}
не проверял, но идея думаю такая должна быть
1
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
};
0
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
0
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)
2
dimon1984
40 / 38 / 0
Регистрация: 22.01.2011
Сообщений: 670
07.03.2011, 14:17  [ТС] #6
постоянно путаю их .
Даже перед тем как написать, специально посмотрел определение этих понятий, но перепутал
обычно редко такие ошибки допускаю
0
07.03.2011, 14:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2011, 14:17
Привет! Вот еще темы с ответами:

Список: связный список, в котором информация о книгах сортируется по убыванию стоимости. - C++
Друзья помогите с реализацией списка. Нужно запрограммировать связный список, в котором информация о книгах сортируется по убыванию...

Необходимо создать список, элемент которого может быть список - C++
Всем доброго времени суток! Стоит следующая задача: необходимо создать список, элемент которого может быть список (да да, звучит...

Двусвязный список (в конец двусвязного списка добавить другой список) - C++
здравствуйте, подскажите пожалуйста, как в конец двусвязного списка добавить другой список?

Напечатать пронумерованный список список первых 10 наиболее популярных газет - C++
опросили 200 подписчиков. Каждый из них назвал 3 любимые газеты. Напечатать пронумерованный список список первых 10 наиболее популярных...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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