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

Перемещение элементов односвязного списка - 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
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
28.03.2013, 17:51
dude45, очень непонятный код, я так понял вы сначала заполняете список, а потом сортируете... лучше добавлять элементы и сразу сортировать, положительные в начало, отрицательные в конец, мороки меньше

Добавлено через 22 секунды
dude45, можно

Добавлено через 9 минут
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
// obr.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <locale>
using namespace std;
 
struct List
{
    int data;
    List *next;
};
  
void DeleteList(List *_Head)
{
    List *temp = _Head;
    List *cur = NULL;
 
    while(temp != NULL)
    {
        cur = temp -> next; 
        delete temp;
        temp = cur; 
    }
}
 
List *addToBack(List *_Head, 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;
    }
 
    return _Head;
}
 
List *addToFront(List *_Head, const int value)                    //добавление в начало
{
    List *Ptr = new List;
    Ptr -> data = value;
 
    Ptr -> next = _Head;
    _Head = Ptr;
 
    return _Head;
}
 
void delList(List *_Head, 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 *_Head)
{
    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"));
 
    List *Head = NULL;
    int value;
 
    for(int i = 0; i < 10; ++i){
        wcout << L"Введите число: ";
            cin >> value;
 
        if(value >= 0)
            Head = addToFront(Head, value);
        else
            Head = addToBack(Head, value);
 
        showList(Head);
    }
 
    DeleteList(Head);
 
    cout << "\n\n";
    return 0;
}
Добавлено через 7 минут
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
// obr.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
 
struct Print{
    template <typename T>
    void operator() (T &elem)
    {
        cout << elem << ' ';
    }
};
 
template <typename T>
void addToFront(list<T> &_coll, const T value)      
{
    _coll.push_front(value);
}
 
template <typename T>
void addToBack(list<T> &_coll, const T value)      
{
    _coll.push_back(value);
}
 
template <typename T>
void dellist(list<T> &_coll)
{
    _coll.pop_front();
}
 
template <typename T>
void showlist(list<T> &_coll)
{
    if(!_coll.empty())
    {
        for_each(_coll.begin(), _coll.end(), Print());
        cout << endl;
    }
    else
        wcout << L"Список пуст!\n";
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    wcout.imbue(locale(".866"));
 
    list<int> coll;
    int value;
 
    for(int i = 0; i < 10; ++i){
        wcout << L"Введите число: ";
            cin >> value;
 
        if(value >= 0)
            addToFront(coll, value);
        else
            addToBack(coll, value);
 
        showlist(coll);
    }
 
    if(coll.empty())
        coll.clear();
 
    cout << "\n\n";
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru