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

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

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

Показать сообщение отдельно
yoghurt92
373 / 344 / 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;
если по хорошему, это должно быть не в теле цикла... вынесите это.
 
Текущее время: 05:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru