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

удаления узла в двухсвязном списке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Лимит памяти для решений задач http://www.cyberforum.ru/cpp-beginners/thread781010.html
Чем руководствуются авторы задач, устанавливая лимт памяти для программ-решений? Например, простая задча. Её решение, сохранённое в текстовом режиме (блокнот) занимает на диске 4 килобайта. #include <iostream> using namespace std; int main() { int n; cin >> n; cout << n/10 << " " << n%10 << endl;
C++ фиктивный узел Привет всем ! вот сижу и разбираюсь со связным списоком, и все никак не понимаю что такое фиктивный узел ... объясните пожалуйста что за фиктивный узел такой ? и пришлите простенький код с фиктивным узлом для больше понимания (желательно односвязной список)... http://www.cyberforum.ru/cpp-beginners/thread780983.html
C++ Определить класс Gradebook: Не могу понять что не так
Учусь по книге "Дейтел Х., Дейтел П. Как программировать на C++ (5-е издание, 2008)" учусь 2 дня, не ругайтесь пожалуйста если что то совсем очевидное =) вот пример из книги http://img22.imageshack.us/img22/1179/111122222.png
Статические поля и наследование C++
Поймал себя на мысли, что не всё знаю о статических членах класса, а проверить, запустив тестовую программу-пример лень. Известно, что статическое поле класса будет общим для всех его экземпляров и работает как одна глобальная переменная. Короче, если класс со статическим членом является базовым для двух классов-наследников, будет ли это поле общим для них? Вопрос возникает даже при наличии...
C++ Нарисовать в консоли указанные фигуры http://www.cyberforum.ru/cpp-beginners/thread780978.html
Реализовать приложение, которое рисует в консоли следующие геометрические фигуры: прямоугольник, треугольник и ромб. Алгоритм рисования каждой фигуры должен быть оформлен в виде функций: Rectangle, Triangle и Rhomb, соответственно. Каждая функция должна принимать размеры фигур, а также дополнительный параметр fill типа bool, определяющий, будет ли фигура “заполненной” или нет. По-умолчанию...
C++ strstream (Как записать теперь в s нулевой байт 0, чтобы он не интерпретировался с частью строки?) int main() { strstream s; s << "555"; cout << s.str() << endl; system("pause"); } Как записать теперь в s нулевой байт 0, чтобы он не интерпретировался с частью строки? (возможность записи с помощью цикла по символам s.str() желательно исключить) подробнее

Показать сообщение отдельно
septe-mber
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 123
07.02.2013, 04:53     удаления узла в двухсвязном списке
Привет всем! такая проблема , не получается корректно удалить узел из двухвязного списка. как решить эту проблему ?
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
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
struct Node
{
    int data;
    Node* next;
    Node* prev;
};
 
void push(Node*& begin, Node*& end, int value)
{
    Node* item = new Node;
    item->data = value;
    item->next = NULL;
    item->prev = NULL;
    if(begin == NULL)
    {
        begin = item;
        end = item;
    }
    else
    {
        item->prev = end;
        end->next = item;
        end = item;
    }
}
 
void show(Node* head)
{
    Node* cur = head;
    if(cur != NULL)
    {
        cout<<cur->data<<'\t';
        show(cur->next);
    }
}
 
void remove(Node*& begin, Node*& end, int index)
{
    Node* cur = begin;
    for(int i = 1; i < index; i++)
        cur = cur->next;
    Node* prev = begin;
    while(prev->next != cur)
        prev = prev->next;
    prev->next = cur->next;
    delete cur;
    cur = NULL;
 
}
 
void show1(Node* head)
{
    Node* cur = head;
    if(cur != NULL)
    {
        cout<<cur->data<<'\t';
        show(cur->prev);
    }
}
 
int main()
{
    Node* begin, *end;
    begin = NULL; end = NULL;
    for(int i = 0; i < 4; i++)
        push(begin, end, rand() % 30);
    cout<<"Обход с начало:"<<endl;
    show(begin);
    cout<<endl<<endl;
    remove(begin, end, 2);
    cout<<"Обход с начало:"<<endl;
    show(begin);
    cout<<endl;
    cout<<"Обход с конца:"<<endl;
    show1(end);
    return 0;
}
вот результат работы
Миниатюры
удаления узла в двухсвязном списке  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru