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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Alexandr93
2 / 2 / 0
Регистрация: 09.11.2010
Сообщений: 65
#1

Двунаправленный список - C++

02.03.2011, 09:47. Просмотров 657. Ответов 3
Метки нет (Все метки)

Помогите пожалуйста удалить заданный элемент из двунаправленного списка...
Напишите как это делается
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2011, 09:47     Двунаправленный список
Посмотрите здесь:

C++ двунаправленный список
C++ Двунаправленный список
C++ Двунаправленный список
Двунаправленный список C++
C++ СД Двунаправленный список
C++ Двунаправленный список!
Двунаправленный список C++
C++ двунаправленный список.
Двунаправленный список C++
C++ двунаправленный список
C++ Двунаправленный список

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4952 / 3028 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
02.03.2011, 13:06     Двунаправленный список #2
Если не ошибаюсь, вот так. Писал с нуля, не имея перед глазами самого класса List, поэтому, возможно, что-то упустил. Если так, думаю, коллеги поправят.

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
template< typename T >
bool List< T >::delete_need_elem(const T& need)
{
    List< T > *i = _head;
    
    while (i->next != 0)
    {
        if (i->value == need)
        {
            if (i != _head)
                i->prev->next = i->next;
            
            if (i != _tail)
                i->next->prev = i->prev;
 
            delete i;
 
            return true;
        }
 
        i = i->next;
    }
 
    return false;
}
Alexandr93
2 / 2 / 0
Регистрация: 09.11.2010
Сообщений: 65
02.03.2011, 16:49  [ТС]     Двунаправленный список #3
Assembler
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
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <fstream>
#include <locale>
using namespace std;
struct point
{int key;//значение элемента структуры
point *next, *ppred;
};
 
 
point* make_point( int n)
{
point *first, *first1,*p;
first=NULL;
for (int i=n;i>0;i--)
 {
 p=new(point);//создание нового элемента структуры
 p->key=i;//значение элемента структуры
 p->next=first;//ссылается на следующий
 first=p;
 if (i!=n){
     first1=p;
     p=p->next;
     p->ppred=first1;
     p=p->ppred;};
}
p->ppred=NULL;
return first;
}
 
point* print_point(point*first)
{
if (first==NULL)return NULL;
point*p=first;
while(p!=NULL)
{
cout<<p->key<<" ";
p=p->next;
}
cout << endl;
 
return first;
}
Добавлено через 1 минуту
Вот начало программы, помогите удалить заданный элемент и добавить в конец один
silent_1991
Эксперт С++
4952 / 3028 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
02.03.2011, 17:08     Двунаправленный список #4
Alexandr93, я вам уже написал код, поправьте его так, чтобы работал с вашей структурой, уберите шаблон и всё. Вставка в конех вообще никакого труда не составляет:
C++
1
2
3
4
5
6
List *new_elemt = new List;
new_elem->value = value;
tail->next = new_elem;
new_elem->prev = tail;
new_elem->next = 0;
tail = new_elem;
Yandex
Объявления
02.03.2011, 17:08     Двунаправленный список
Ответ Создать тему
Опции темы

Текущее время: 22:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru