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

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

Войти
Регистрация
Восстановить пароль
 
Visp1024
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 4
#1

Организация вывода списка - C++

13.01.2013, 07:10. Просмотров 385. Ответов 4
Метки нет (Все метки)

При простом связанном хранении каждый элемент списка представляет собой структуру nd, состоящую из двух элементов: val - предназначен для хранения элемента списка, n - для указателя на структуру, содержащую следующий элемент списка. На первый элемент списка указывает указатель dl. Для всех операций над списком используется описание:

C++
1
2
3
4
5
typedef struct nd
          {  float val;
             struct nd * n;  }  ND;
        int i,j;
        ND * dl, * r, * p;
Вопрос, как организовать вывод всех элементов списка? (С++)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2013, 07:10     Организация вывода списка
Посмотрите здесь:

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

Организация ввода и вывода одномерных массивов в турбо С - C++
При поступлении в вуз абитуриенты, получившие двойку на первом экзамене, ко второму не допускаются. В массиве A записаны оценки...

организация списка : удаление и внесение новых элементов - C++
Приветствую! У меня есть односвязный список. Изначально он пустой и я вношу какие то значения, например, 1 , 2 , 3 , все выводится в...

Ошибка вывода односвязного списка на экран - C++
Сначала считал односвязный список из файла, но теперь какая то странная ошибка - односвязный список выводится на экран, но появляется вот...

Краш во время вывода списка на экран - C++
Имеется некоторый код (код трохи по-калечному написан, не важно). Суть в том, что он выкидывает необработанное исключение после запуска при...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MLPMan
Кандёхаем веселее!
282 / 276 / 34
Регистрация: 02.10.2012
Сообщений: 1,963
13.01.2013, 07:59     Организация вывода списка #2
C++
1
2
3
4
5
6
nd nd1;
while (true)
{
WriteData(nd1.val);
if (nd1.n==NULL) break; else nd1 = *(nd1.n);
}
Как-нибудь так.

Добавлено через 13 минут
Ну что, работает? Чувствую, кривой этот код.
Visp1024
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 4
13.01.2013, 08:04  [ТС]     Организация вывода списка #3
MLPMan, Ага, сейчас напишу свои наработки

Добавлено через 4 минуты
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
60
61
62
63
64
65
66
67
#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <stdlib.h>
 
using namespace std;
 
typedef struct nd
{
    int val;
    struct nd * n;} ND;
 
class Chislo {
public:
    int i,j;
    ND * dl, * r, * p;
    
public:
       //Конструктор с добавлением и выводом 5 эллементов списка
    Chislo(){
        for (int i=0; i<5; i++){
            r=(ND *)malloc(sizeof(ND));
            r->n=p->n;
            r->val=5;
            p->n=r; 
            printf("%i ",r->val);
        }
        printf("\n");
    }
    
    //деструктор
    ~Chislo(){}
    
    //Перегрузка ++ с добавлением эллемента и выводом списка
    Chislo operator++(){
        r=(ND *)malloc(sizeof(ND));
        r->n=p->n;
        r->val=5;
        p->n=r; 
        
    //      ND * head = dl;
    //do{
    //std::cout<<head->val<<std::endl;         //Вариант вывода №1
    //head = head->n;
    //}while(head);
 
    //   r=dl;
    //    while(r!=NULL){
    //    printf(" %i ",r->val);                        //Вариант вывода №2
    //    r=r->n;}
    //    printf("\n");
    //    }
 
  //Перегрузка -- с удалением эллемента и выводом списка
    Chislo operator--(){
        p->n=r->n; free(r->n);
    }
};  
 
 
int main()
{
    Chislo m;
    ++m;
    getch();
    return 0;
}
По сути оба варианта вывода идентичны, как в принципе и то, что оба крашатся на выводе 2-го эллемента.
MLPMan
Кандёхаем веселее!
282 / 276 / 34
Регистрация: 02.10.2012
Сообщений: 1,963
13.01.2013, 08:35     Организация вывода списка #4
Может, dl, r, p должны быть просто переменными, а не указателями?
Тогда

C++
1
ND  dl,  r,  p;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
dl.val=100;
dl.n=&r;
r.val=250.2;
r.n=&p;
p.val=33.333;
 
ND *nd1;
 
nd1 = &dl;
Memo1->Lines->Clear();
while (true) {
Memo1->Lines->Add(FloatToStr(nd1->val));
if (nd1->n==NULL) break; else nd1=(*nd1).n;
}
Вывод:
Код
100
250,199996948242
33,3330001831055
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2013, 18:07     Организация вывода списка
Еще ссылки по теме:

Как работает функция вывода элементов списка? - C++
Ребят, объясните в кратце, как работает функция вывода элементов списка(любая), например такая. и если кто знает, дайте...

Напишите алгоритм вывода списка ребер неориентированного графа - C++
Простой неориентированный граф задан матрицей смежности, выведите его представление в виде списка ребер. Вот начало #include &lt;iostream&gt;...

Подскажите кросспратформенный пример для вывода списка файлов - C++
Есть ли какой нибудь кроссплатформенный пример для вывода списка файлов в директории C++.

Список: Ошибка вывода членов списка при дублировании ключей - C++
Есть список с числами от 0 до 9. Всё выводит по заданию, но... Ввожу я число например 2, если их несколько, то выводит их порядковые...


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

Или воспользуйтесь поиском по форуму:
Visp1024
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 4
13.01.2013, 18: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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <stdlib.h>
 
using namespace std;
 
//ÑòðóêòóðГ* Г±ГЇГЁГ±ГЄГ*
struct Node
{
    int val;
    Node *next;
};
 
//Îáüÿâëÿåì ГЄГ«Г*Г±Г± ëèñò
class List
{
private:
        Node *head, *tail;
 
public:
       //ГЉГ®Г*ñòðóêòîð
        List()
        {
            head=tail=NULL;
        }
        List(int num)
        {
            head = new Node;
            head->next = NULL;
            head->val = num;    
            tail = head;
        }
        
        //äåñòðóêòîð
        ~List()
        {
        while (head != NULL)
            --*this;
        }
 
        //ÏåðåãðóçêГ* ++ Г± äîáГ*âëåГ*ГЁГҐГ¬ ýëëåìåГ*ГІГ* Гў ГЄГ®Г*ГҐГ¶ Г±ГЇГЁГ±ГЄГ*
        List& operator++()
        {
            Node* tmp = new Node;
            tmp->next = NULL;
            tmp->val = 5;
            tail->next = tmp;
            tail = tmp;
            return *this;
        }
 
        //Âûâîä Г±ГЇГЁГ±ГЄГ*
        void Print()
        {
            Node* tmp = head;
            while (tmp!=NULL)
            {
                cout<<tmp->val<<" ";
                tmp = tmp->next;
            }
            cout<<endl;
        }
 
        //ÏåðåãðóçêГ* -- Г± ГіГ¤Г*ëåГ*ГЁГҐГ¬ ýëëåìåГ*ГІГ* Гў Г*Г*Г·Г*ëå Г±ГЇГЁГ±ГЄГ*
        List& operator--()
        {
            if (head != NULL)
            {
                Node* tmp = head;
                head = head->next;
                delete tmp;
            }
            return *this;
        }
    };  
 
 
    int main()
    {
        List list(5);
        for (int i=0; i<10; i++){
            ++list;
            list.Print();}
        for (int i=0; i<10; i++){
            --list;
            list.Print();}
        list.~List();
        getch();
        return 0;
    }
Вот допилил, вдруг кому пригодится.
Yandex
Объявления
13.01.2013, 18:07     Организация вывода списка
Ответ Создать тему
Опции темы

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