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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.75
Владислаучык
0 / 0 / 1
Регистрация: 21.03.2013
Сообщений: 312
#1

Двусвязный список: вставка, удаление, просмотр - C++

04.05.2014, 19:45. Просмотров 4857. Ответов 3
Метки нет (Все метки)

Может есть у кого-нибудь двусвязный список с вставкой, удалением, просмотром, доступу к текущему элементу, передвижением вперёд назад (в стиле с++)?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2014, 19:45     Двусвязный список: вставка, удаление, просмотр
Посмотрите здесь:

Двусвязный список C++
C++ Вставка нового узла в двусвязный список
Переделать двусвязный список в двусвязный кольцевой C++
C++ Двусвязный список, удаление элемента
Двусвязный список (в конец двусвязного списка добавить другой список) C++
Двунаправленный список (добавление/удаление элементов в голову, просмотр списка, реализовать дублирование элементов с заданным значением) C++
Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список C++
Vector, список. Удаление и вставка элементов C++
C++ Создать двусвязный список групп факультета, где каждая группа представляет собой односвязный список студентов
Составить двусвязный список на основе класса, объекты которого будут формировать этот список C++
Двусвязный список C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Melg
538 / 159 / 64
Регистрация: 23.09.2013
Сообщений: 314
04.05.2014, 21:54     Двусвязный список: вставка, удаление, просмотр #2
А чем Вас не устраивает реализация шаблонного класса list из стандартной библиотеки шаблонов?
http://www.cplusplus.com/reference/list/list/
Владислаучык
0 / 0 / 1
Регистрация: 21.03.2013
Сообщений: 312
07.05.2014, 00:18  [ТС]     Двусвязный список: вставка, удаление, просмотр #3
Melg, по задания надо свой реализовать, и пользоваться им с помощью итератора.

Добавлено через 1 минуту
Придумайте и реализуйте дважды связанный список, которым можно пользоваться посредством итератора. Итератор иметь действия для движения вперед и назад, действия для вставки и удаления элементов списка, и способ доступа к текущему элементу.

Добавлено через 2 минуты
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
#include <iostream>
using namespace std;
#include <algorithm>
#include <vector>
#include <list>
#include <locale.h>
#include <iterator>
#include <stack>
 
struct Node       //Структура являющаяся звеном списка
 {
     int x;     //Значение x будет передаваться в список
     Node *Next,*Prev; //Указатели на адреса следующего и предыдущего элементов списка
 };
 
 class List   
 {
     Node *Head,*Tail, *cur;
     Node *Next,*Prev;//Указатели на адреса начала списка и его конца
 public:
     List():Head(NULL),Tail(NULL){}; //Инициализируем адреса как пустые
     ~List(); 
     void Show(); 
     void Delete_end();
     void empty() {if (Head == NULL) cout<<"Список пуст"<<endl; else cout<<"Список не пуст"<<endl;}
     void Delete_first();
     void Add(); 
 };
 
 class iterator : public List
 {
     friend Node;
 public:
     iterator(){};
     iterator& operator++()
     {
         Node*temp;
        // Node=Node->Next;
         return *this;
     }
 };
 
List::~List() 
 {   
     while (Head) //Пока по адресу на начало списка что-то есть
     {
         Tail=Head->Next; //Резервная копия адреса следующего звена списка
         delete Head; //Очистка памяти от первого звена
         Head=Tail; //Смена адреса начала на адрес следующего элемента
     }
 }
 
void List::Delete_first()
{
 
}
 
void List::Delete_end()
{
    Node *temp;
    Node *current=Tail;
    current=Head;
    temp=Head->Next;
    delete current;
    Head=temp;
    temp->Prev=NULL;
}
 
 void List::Add()
 {
     int x=0;
     cout<<"Введите элемент списка: ";
     cin>>x;
   Node *temp=new Node; //Выделение памяти под новый элемент структуры
   temp->Next=NULL;  //Указываем, что изначально по следующему адресу пусто
   temp->x=x;//Записываем значение в структуру
 
   if (Head!=NULL) //Если список не пуст
   {
       temp->Prev=Tail; //Указываем адрес на предыдущий элемент в соотв. поле
       Tail->Next=temp; //Указываем адрес следующего за хвостом элемента
       Tail=temp; //Меняем адрес хвоста
   }
   else //Если список пустой
   {
       temp->Prev=NULL; //Предыдущий элемент указывает в пустоту
       Head=Tail=temp; //Голова=Хвост=тот элемент, что сейчас добавили
   }
 }
 
 void List::Show()
 {
 
//ВЫВОДИМ СПИСОК С КОНЦА
     Node *temp=Tail;
      //Временный указатель на адрес последнего элемента
     while (temp!=NULL) //Пока не встретится пустое значение
     {
     cout<<temp->x<<" "; //Выводить значение на экран
     temp=temp->Prev; //Указываем, что нужен адрес предыдущего элемента
     }
     cout<<"\n";
 
 //ВЫВОДИМ СПИСОК С НАЧАЛА
     temp=Head; //Временно указываем на адрес первого элемента
      while (temp!=NULL) //Пока не встретим пустое значение
     {
     cout<<temp->x<<" "; //Выводим каждое считанное значение на экран
     temp=temp->Next; //Смена адреса на адрес следующего элемента
     }
     cout<<"\n";
 }
 
int main ()
{
 system("CLS");
 setlocale(LC_ALL,"Russian");
 List lst; 
 lst.empty();
 lst.Add(); 
 lst.empty();
 lst.Add();
 lst.Add();
 lst.empty();
 lst.Add();
  lst.Delete_first();
 lst.Delete_end();
 lst.Show(); 
 lst.Delete_end();
 lst.Add();
 lst.Delete_first();
 lst.Show();
  system("PAUSE");
}
Alione
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 51
29.11.2016, 18:23     Двусвязный список: вставка, удаление, просмотр #4
Апая тему, интересует, как реализовать поиск элемента в списке ?
Yandex
Объявления
29.11.2016, 18:23     Двусвязный список: вставка, удаление, просмотр
Ответ Создать тему
Опции темы

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