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

Список: как сделать вывод не в обратном порядке а в прямом - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
yuliyayuliya28
3 / 3 / 0
Регистрация: 06.03.2011
Сообщений: 319
07.10.2012, 21:49     Список: как сделать вывод не в обратном порядке а в прямом #1
Здравствуйте пытаюсь реализовать список, но не понимаю как сделать вывод не в обратном порядке а в прямом?думала что достаточно print2().но видимо не так.
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
struct Element
{
    int i;
    Element * next;
    Element(){i=0;next=NULL;}
};
class List
{
Element * top;
public:
    List():top(NULL){}
    void operator +(int it)
    {Element * t;
    t=new Element;
    t->i=it;
    t->next=top;
    top=t;
    }
    void print1()
    {
    for(Element * i=top;i!=NULL;i=i->next)
        cout<<i->i<<" ";
    }
    void print2()
    {
        Element *p=top;
        while(p!=NULL)
        {
                cout<<p->i<<"  ";
                p=p->next;
        }
    }
    };
 
void primer()
{
    List t;
    for(int i=0;i<13;i=i++)
        t+i;
    t.print2();
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    primer();
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2012, 21:49     Список: как сделать вывод не в обратном порядке а в прямом
Посмотрите здесь:

Задали односвязный линейный список с целыми числами. Создать новый список, который содержит элементы заданного списка в обратном порядке C++
Вывод в обратном порядке C++
C++ Стек.вывод в файл в прямом порядке
Матрицы. Отсортировать четные столбцы в обратном порядке, а нечетные в прямом C++
Вывод предложения в обратном порядке С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
07.10.2012, 22:57     Список: как сделать вывод не в обратном порядке а в прямом #2
yuliyayuliya28, у Вас суть не в выводе, а в заполнении: оно идет в начало списка. Нужно изменить порядок ввода.
yuliyayuliya28
3 / 3 / 0
Регистрация: 06.03.2011
Сообщений: 319
07.10.2012, 23:13  [ТС]     Список: как сделать вывод не в обратном порядке а в прямом #3
Цитата Сообщение от BumerangSP Посмотреть сообщение
yuliyayuliya28, у Вас суть не в выводе, а в заполнении: оно идет в начало списка. Нужно изменить порядок ввода.
Так...а как это сделать?если у меня есть только указатель на следующий и данные,
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
07.10.2012, 23:31     Список: как сделать вывод не в обратном порядке а в прямом #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
#include <iostream> 
using namespace std; 
 
struct plist
{ 
    int data; 
    plist *next; 
}; 
 
 plist* first = NULL; 
 
void add(int x) //добавление элементов
{ 
    plist* cur;
    plist* f=first;
    if (first==NULL)
     {
      cur = new plist;
      cur->data=x;
      cur->next=first;
      first=cur; 
     }
    else 
     {
         cur = f;
         while(cur->next!=NULL)
           cur=cur->next;
         cur->next = new plist;
         cur=cur->next;
         cur->data=x;
      }
     cur->next=NULL;   
     f=cur;
} 
 
void print(plist *first) 
{ 
    plist *cur = first; 
    while(cur!=NULL) 
    { 
        cout << cur->data <<" "; 
        cur = cur->next; 
    }  
}  
 
 
int main() 
{ 
    add(10); 
    add(20); 
    add(30);  
    print(first); 
    cin.get();
    return 0; 
}
Ваше добавление:
C++
1
2
3
4
t=new Element;
    t->i=it;
    t->next=top;
    top=t;
А нужно сделать как в функции add(int x)
Справитесь?
Aliru777
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 71
08.10.2012, 01:02     Список: как сделать вывод не в обратном порядке а в прямом #5
Наверное чуть не по теме, но скажите пожалуйста этоСписок: как сделать вывод не в обратном порядке а в прямом такая же задача?
Если нет, то чего в ней просят сделать, потому что я не пойму что значить совершить визит?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.10.2012, 04:43     Список: как сделать вывод не в обратном порядке а в прямом #6
Цитата Сообщение от Aliru777 Посмотреть сообщение
я не пойму что значить совершить визит?
В данной задаче - просто перемещение по элементам списка, с возможностью выполнить определённые действия, над содержащимися в них данными (например, вывести на экран).
Aliru777
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 71
08.10.2012, 08:47     Список: как сделать вывод не в обратном порядке а в прямом #7
А выглядеть это должно в main, как код выше или если в я не испоьлзую в main индексов массива,но они есть в реализации то можно с массивом?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.10.2012, 09:57     Список: как сделать вывод не в обратном порядке а в прямом #8
Если судить по заданию, то можно.
yuliyayuliya28
3 / 3 / 0
Регистрация: 06.03.2011
Сообщений: 319
08.10.2012, 11:34  [ТС]     Список: как сделать вывод не в обратном порядке а в прямом #9
Цитата Сообщение от BumerangSP Посмотреть сообщение
Вот небольшой пример списка:
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
#include <iostream> 
using namespace std; 
 
struct plist
{ 
    int data; 
    plist *next; 
}; 
 
 plist* first = NULL; 
 
void add(int x) //добавление элементов
{ 
    plist* cur;
    plist* f=first;
    if (first==NULL)
     {
      cur = new plist;
      cur->data=x;
      cur->next=first;
      first=cur; 
     }
    else 
     {
         cur = f;
         while(cur->next!=NULL)
           cur=cur->next;
         cur->next = new plist;
         cur=cur->next;
         cur->data=x;
      }
     cur->next=NULL;   
     f=cur;
} 
 
void print(plist *first) 
{ 
    plist *cur = first; 
    while(cur!=NULL) 
    { 
        cout << cur->data <<" "; 
        cur = cur->next; 
    }  
}  
 
 
int main() 
{ 
    add(10); 
    add(20); 
    add(30);  
    print(first); 
    cin.get();
    return 0; 
}
Ваше добавление:
C++
1
2
3
4
t=new Element;
    t->i=it;
    t->next=top;
    top=t;
А нужно сделать как в функции add(int x)
Справитесь?
Попытала переписать не получается

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
Element* first = NULL; //Error  1   'L::first' : only static const integral data members can be initialized within a class  
 
 
void add1(int x) //добавление элементов
{ 
    Element* p;
    Element* f=first;
    if (first==NULL)
     {
      p = new Element;
      p->i=x;
      p->next=first;
      first=p; 
     }
    else 
     {
         p = f;
         while(p->next!=NULL)
           p=p->next;
         p->next = new Element;
         p=p->next;
         p->i=x;
      }
     p->next=NULL;   
     f=p;
} 
void print3 (El *first) 
{ 
    El *p = first; 
    while(p!=NULL) 
    { 
        cout << p->i <<" "; 
        p = p->next; 
    }  
void testL2()
{
    L t;
    for(int i=0;i<13;i=i++)
        t.add1(i);
    t.print3(first);//как подать указатель на текущий элемент правильно?Error   2   error C2039: 'print3' : is not a member of 'L'
 
}
Error 3 error C2065: 'first' : undeclared identifier
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
08.10.2012, 14:30     Список: как сделать вывод не в обратном порядке а в прямом #10
yuliyayuliya28, не стоит понимать буквально
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
#include <iostream>
using namespace std;
struct Element
{
    int i;
    Element * next;
    Element(){i=0;next=NULL;}
};
class List
{
Element * top;
public:
    List():top(NULL){}
    void operator +(int it)
    { 
    Element* cur;
    Element* f=top;
    if (top==NULL)
     {
      cur = new Element;
      cur->i=it;
      cur->next=top;
      top=cur; 
     }
    else 
     {
         cur = f;
         while(cur->next!=NULL)
           cur=cur->next;
         cur->next = new Element;
         cur=cur->next;
         cur->i=it;
      }
     cur->next=NULL;   
     f=cur;
} 
    
    void print1()
    {
    for(Element * i=top;i!=NULL;i=i->next)
        cout<<i->i<<" ";
    }
    void print2()
    {
        Element *p=top;
        while(p!=NULL)
        {
                cout<<p->i<<"  ";
                p=p->next;
        }
    }
    };
 
void primer()
{
    List t;
    for(int i=0;i<13;i++)
        t+i;
    t.print2();
}
 
 
int main()
{
    primer();
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2012, 23:53     Список: как сделать вывод не в обратном порядке а в прямом
Еще ссылки по теме:

C++ Вывод цифр введённого числа в прямом порядке
Вывод слов в обратном порядке C++
C++ Вывести все чётные числа между а и b в прямом и обратном порядке

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.10.2012, 23:53     Список: как сделать вывод не в обратном порядке а в прямом #11
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
struct Element
{
    int i;
    Element * next;
    Element(){i=0;next=NULL;}
};
class List
{
Element * top; // начало списка
Element * rear; // конец списка
public:
    List():top(NULL), rear(NULL){}
    
    void operator +(int it)
    {
     Element *t = new Element; // новый элемент списка
     t->i=it;
     t->next=NULL;
     if (top == NULL) // если список пустой, то в начало
            top = t; // top начало списка
     else  rear -> next = t; // если список не пустой, то в конец
       
     rear = t; // rear конец списка
    }
    
     void print1()
    {
        for(Element * i=top; i!=NULL; i=i->next)
                cout<<i->i<<" ";
    }
    
    void print2()
    {
        Element *p=top;
        while(p!=NULL)
        {
                cout<<p->i<<"  ";
                p=p->next;
        }
    }
    };
 
void primer()
{
    List t;
    for(int i=0;i<13;i=i++)
        t+i;
    t.print2();
}
Yandex
Объявления
08.10.2012, 23:53     Список: как сделать вывод не в обратном порядке а в прямом
Ответ Создать тему
Опции темы

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