Форум программистов, компьютерный форум 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)); подробнее

Показать сообщение отдельно
ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
17.02.2013, 08:43     Дек символов
1. У вас список получается с головой, судя по этому:
C++
1
2
3
4
L2 :: L2()
{
    head = new L2_elem;
}
Я предлагаю сделать его без головы, т.к. это будет легче понять:
C++
1
2
3
4
5
L2 :: L2()
{
    head = 0;
    tail = 0;
}
2. давайте добавим в список L2 элемент-функцию проверки на пустоту списка:
C++
1
2
3
4
bool L2 :: isEmpty ()
{
    return head == 0;
}
Эта функция в дальнейшем будет полезна

3. Собственно про реализацию вставок и удалений.
Вижу у вас трудности с этим. Сделаем так: я напишу реализации pushHead и popTail, а вы возьмете карандаш и бумагу и попробуете разобраться (порисовать списки) в том, как это работает на пустом списке и на заполненном.

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
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;
    }
}
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;
}
Оставшиеся функции добавления в хвост и удаление из головы реализуются аналогично. Если не догадаешься как, то смотри спойлер
Кликните здесь для просмотра всего текста
просто в соответствующих функциях замени слова head на tail, а tail на head, то же самое сделай с prev и next
 
Текущее время: 12:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru