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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как найти в двумерном массиве наибольшую диагональ/горизонталь/вертикаль? http://www.cyberforum.ru/cpp-beginners/thread1708839.html
как найти в двумерном массиве наибольшую диагональ/горизонталь/вертикаль?? подскажите пожалуйста
C++ Проверка матрицы на Х-образность Как правильно организовать проверку матрицы на X-образность (когда элементы главной и побочной диагонали !=0, а остальные нулевые) http://www.cyberforum.ru/cpp-beginners/thread1708837.html
Решить задачу о 8 ферзях используя алгоритм поиска в глубину C++
Нужно решить задачу о 8 ферзях используя алгоритм поиска в глубину. Я вообще не могу понять как этот алгоритм туда запихнуть. Пожалуйста подскажите что за чем должно идти, и нужно сделать задачу с...
Описать функцию IsPowerN(K, N ) логического типа, проверяющую является ли параметр K степенью числа N C++
Описать функцию IsPowerN(K, N ) логического типа, возвращающую TRUE, если целый параметр K(>0) является степенью числа N (>1), и FALSE в противном случае. Дано число N(>1) и набор из 10 целых...
C++ Описать процедуру InvertDigits(K), меняющую порядок следования цифр http://www.cyberforum.ru/cpp-beginners/thread1708788.html
Описать процедуру InvertDigits(K), меняющую порядок следования цифр целого положительного числа K на обратный (K — параметр целого типа, являющийся одновременно входным и выходным). С помощью этой...
C++ Напечатать числа в виде следующей таблицы: Напечатать числа в виде следующей таблицы с использование вложенных циклов: подробнее

Показать сообщение отдельно
ssXXss
266 / 188 / 10
Регистрация: 15.01.2011
Сообщений: 681
11.04.2016, 17:03
С++ Линейный двусвязный список , гугла тыкнула.
Кликните здесь для просмотра всего текста

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 <stdlib.h>
#include <iostream.h>
 
struct Node       //Структура являющаяся звеном списка
 {
     int x;     //Значение x будет передаваться в список
     Node *Next,*Prev; //Указатели на адреса следующего и предыдущего элементов списка
 };
 
 class List   //Создаем тип данных Список
 {
     Node *Head,*Tail; //Указатели на адреса начала списка и его конца
 public:
     List():Head(NULL),Tail(NULL){}; //Инициализируем адреса как пустые
     ~List(); //Деструктор
     void Show(); //Функция отображения списка на экране
     void Add(int x); //Функция добавления элементов в список
 };
 
List::~List() //Деструктор
 {   
     while (Head) //Пока по адресу на начало списка что-то есть
     {
         Tail=Head->Next; //Резервная копия адреса следующего звена списка
         delete Head; //Очистка памяти от первого звена
         Head=Tail; //Смена адреса начала на адрес следующего элемента
     }
 }
 
 void List::Add(int 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");
 List lst; //Объявляем переменную, тип которой есть список
 lst.Add(100); //Добавляем в список элементы
 lst.Add(200);
 lst.Add(900);
 lst.Add(888);
 
 lst.Show(); //Отображаем список на экране
  system("PAUSE");
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru