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

Дек символов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Свежая книга по С++ (без архаизмов) http://www.cyberforum.ru/cpp-beginners/thread787113.html
Хочу идти в ногу со временем. Чтобы в книге, по которой буду учиться, было все с оглядкой на стандарт С++11. Например, раньше писали vector<int>::const_iterator itr = myvec.begin(); теперь можно auto itr = myvec.begin(); Я не хочу учить то, что уже никому не нужно. Подскажите свежую книгу, а?
C++ Работа со структурами Подскажите почему ничего не выводится? Когда жму CTRL-F5 выдаёт что есть ошибки, хотя в коде ничего не подсвечивается. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> int main() { SetConsoleCP(1251); http://www.cyberforum.ru/cpp-beginners/thread787100.html
непредвиденная ошибка C++
сел за старый проект обнаружил такое: // Elemental war.cpp: главный файл проекта. #include "stdafx.h" #include "Form1.h" int main(array<System::String ^> ^args) {
Оператор switch. В чем ошибка? C++
Почему Свитч не отрабатывает? После ввода ans1 выводиться вопрос для цикла ДуВаил. Где я торможу? :( #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; int _tmain(int argc, _TCHAR* argv) { setlocale (LC_ALL, "russian"); char ans;
C++ Работа со строками. Определить количество пробелов в строке и вывести на экран http://www.cyberforum.ru/cpp-beginners/thread787070.html
ввести строку символов.определить количество пробелов в строке и вывести на экран.вывести на экран символ,номер позиции которого соответствует количеству символов.если можно,с подробным объяснением.
C++ Не работает програма Код #include <iostream> #include <stdio.h> #include <math.h> using namespace std; int main () { double a,b,c,x,p; cout <<"Введите стороны треугольника\n"; cin >>a>>b>>c; p=(a+b+c)/2; x=sqrt(p*(p-a)*(p-b)*(p-c)); подробнее

Показать сообщение отдельно
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
19.02.2013, 19:08  [ТС]     Дек символов
Цитата Сообщение от ya_noob Посмотреть сообщение
У вас список получается с головой, судя по этому:

C++
1
2
3
4
L2 :: L2()
{
      head = new L2_elem;
}
Я предлагаю сделать его без головы, т.к. это будет легче понять:
понять это действительно легче, но не уверен, что это пройдет по требованиям. И еще вопросик - в чем моя принципиальная ошибка?

Добавлено через 1 час 31 минуту
ну вот как - то так получилось.
не тестировал еще правда.
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
#include <iostream>
#include "L2.h"
L2_elem :: L2_elem()
    : prev(0), next(0)
{
    
}
char L2_elem :: get_el()
{
    return el;
}
 
L2_elem*  L2_elem :: get_p()
{
    return prev;
}
 
L2_elem :: L2_elem (char c, L2_elem* n,L2_elem* p)      //присваивание значений
{
    el = c;
    next = n;
    prev = p;
}
//реализация L2
L2 :: L2()
{
    head = 0;//new L2_elem;                             // по умолчанию вызывается конструктор без параметров L2_elem
    tail = 0;//new L2_elem;
}
 
bool L2 :: isEmpty ()
{
    return head == 0;
} 
 
 
 
void L2 :: pushHead (char c)            // добавить элемент в начало списка
{
    L2_elem* NewEl = new L2_elem;
    NewEl->prev = 0;
    NewEl->next = head;
    NewEl->el = c;
    if ( isEmpty() )                    // если список пуст
    {
        head = NewEl;                   // делаем новый элемент головой
        tail = head;
    }
    else
    {
        head->prev = NewEl;
        head = NewEl;
    }
}
void L2 :: pushTail (char c)            // добавить элемент в конец списка  
{
    L2_elem* NewEl = new L2_elem;
    NewEl->next = 0;
    NewEl->prev = tail;
    NewEl->el = c;
    if ( isEmpty() )                    // если список пуст
    {
        tail = NewEl;                   // делаем новый элемент хвостом
        head = tail;
    }
    else
    {
        tail->next = NewEl;
        tail = NewEl;
    }
}
 
char L2 :: popHead () 
{
    if ( isEmpty() ) return 0; 
 
    char c = head->el;
    
    if ( head->next == 0 )              // если в списке всего 1 элемент
    {
        delete head;                    // удаляем его
        head = 0;                       // и говорим, что список пуст
        tail = 0;
    }
    else 
    {
        head = head->next; // сдвигаем tail на предыдущий элемент
        delete ( head->prev ); // и удаляем старый последний элемент
        head->prev = 0;
    }
 
    return c;
}
 
char L2 :: popTail () 
{
    if ( isEmpty() ) return 0; 
 
    char c = tail->el;
    
    if ( tail->prev == 0 )              // если в списке всего 1 элемент
    {
        delete tail;                    // удаляем его
        head = 0;                       // и говорим, что список пуст
        tail = 0;
    }
    else 
    {
        tail = tail->prev;              // сдвигаем tail на предыдущий элемент
        delete ( tail->next );          // и удаляем старый последний элемент
        tail->next = 0;
    }
 
    return c;
}
я так понимаю для списка еще нужно реализовать функции поиска, вставки элемента после указанного и удаления заданного элемента. Или это лишнее?
 
Текущее время: 19:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru