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

Перемещение элементов односвязного списка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ методы класса http://www.cyberforum.ru/cpp-beginners/thread821214.html
Доброго времени суток! Заранее извиняюсь за тупку. Чем отличаются вызовы c.printMe(); c.printMe; Первый понятно, реализовал метод, выводит на экран объект. А второй что за зверь?
C++ Чтение строки из файла и запись (GUI) Здравствуйте. Собственно находил исходы я на эту тему только для консолек, работаю в визуалке, и когда переделываю код под WinForms то получаются косяки которые я к сожалению исправить не могу. Дак... http://www.cyberforum.ru/cpp-beginners/thread821212.html
Блок-Схема. Вывести список и число слов, длинна которых меньше 5 символов C++
помогите пожалуйста составить блок-схему к программе Программа: из слов строки, разделенных пробелом, создается однонаправленный список/стек, вывести этот список и вывести число слов, длинна...
Вывести массив и распечатать адреса C++
Написал код для задачи, но программа немного не так работает. Не получается правильно построить массив, распечатать адреса и произведение. Помогите пожалуйста! Дана динамическая целочисленная...
C++ Подскажите пожалуйста http://www.cyberforum.ru/cpp-beginners/thread821176.html
У меня проблема такая, когда пробую создать консольное приложение(с++) в visual studio, то выскакивает пустое окошко с кнопками готово, и отмена. дальше ни чего не происходит, жать кнопки бесполезно...
C++ Програмированние цикла с постусловием помогите пожалуйста, не могу понять как это написать (Борланд СИ изучаем месяц) http://s018.***********/i504/1303/9f/ae9a9c04c2e8.jpg Добавлено через 15 часов 34 минуты ап!!! подробнее

Показать сообщение отдельно
yoghurt92
375 / 346 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
28.03.2013, 17:32
dude45, а не легче ограничиться тем, что положительные добавлять в начало, а отрицательные в конец?

Добавлено через 15 минут
dude45, вот как-то так

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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <locale>
using namespace std;
 
struct List
{
    int data;
    List *next;
};
 
class ListNode
{
    private:
        List *Head;
 
    public:
        ListNode()
        {
            Head = NULL;
        }
 
        ~ListNode()
        {
            List *temp = Head;
            List *cur = NULL;
 
            while(temp != NULL)
            {
                cur = temp -> next; 
                delete temp;
                temp = cur; 
            }
        }
 
        void addToBack(const int value)                 //добавление в конец
        {
            List *Ptr = new List;
            Ptr -> data = value;
 
            if(Head == NULL)
            {
                Head = Ptr;
                Ptr -> next = NULL;
            }
            else
            {
                List *temp = Head;
 
                while(temp -> next != NULL)
                    temp = temp -> next;
                
                temp -> next = Ptr;
                Ptr -> next = NULL;
            }
        }
 
        void addToFront(const int value)                    //добавление в начало
        {
            List *Ptr = new List;
            Ptr -> data = value;
 
            Ptr -> next = Head;
            Head = Ptr;
        }
 
        void delList(const int value)
        {
            List *tmp = Head;
            List *cur = NULL;
 
            if(Head != NULL)
            {
                if((Head -> data) == value)                 //если удаляем 1 элемент
                {
                    cur = Head -> next;
                    delete Head;
                    Head = cur;
                }
                else
                {
                    while((tmp != NULL) && (tmp -> data != value))
                    {
                        cur = tmp;
                        tmp = tmp -> next;
                    }
 
                    if(tmp -> next == NULL)                 //если элемент между
                    {                                       //1 и последним
                        delete tmp;
                        cur -> next = NULL;
                    }
                    else                                    //если элемент последний
                    {
                        cur -> next = tmp -> next;
                        delete tmp;
                    }
                }
            }
        }
 
        void showList()
        {
            List *temp = Head;
 
            if(Head != NULL)
            {
                while(temp != NULL)
                {
                    cout << temp -> data << " ";
                    temp = temp -> next;
                }
 
                cout << "\n";
            }
            else
                wcout << L"Список пуст!\n";
        }
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    wcout.imbue(locale(".866"));
 
    ListNode Universal;
    int value;
 
    for(int i = 0; i < 10; ++i){
        wcout << L"Введите число: ";
            cin >> value;
 
        if(value >= 0)
            Universal.addToFront(value);
        else
            Universal.addToBack(value);
 
        Universal.showList();
    }
 
    cout << "\n\n";
    return 0;
}
Добавлено через 4 минуты
Цитата Сообщение от dude45 Посмотреть сообщение
node*r;
* * node*w;
* * node*fr;
* * node*er;
если по хорошему, это должно быть не в теле цикла... вынесите это.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru