Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2015, 16:25   #1
nwhta
Форумчанин
 
Регистрация: 30.08.2013
Сообщений: 153
По умолчанию двухсторонние листы

Всем привет! экзамены на носу а я тему не очень понимаю, если кто может напишите мне в пример функцию по созданию листа в две стороны, в книгах только односторонние есть и т.п а мне бы двух сторонний, заранее Спасибо!
больше знаю, лучше сплю)
nwhta вне форума Ответить с цитированием
Старый 25.05.2015, 17:01   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,710
По умолчанию

http://lmgtfy.com/?q=%D0%B4%D0%B2%D1...81%D0%BE%D0%BA
p51x вне форума Ответить с цитированием
Старый 26.05.2015, 13:24   #3
nwhta
Форумчанин
 
Регистрация: 30.08.2013
Сообщений: 153
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
при всем моем уважении, нету на СИ языке ДВУХСВЯЗНЫХ СПИСКОВ.....если трудно написать просто скажите
больше знаю, лучше сплю)
nwhta вне форума Ответить с цитированием
Старый 26.05.2015, 14:46   #4
Kilix
Заблокирован
 
Регистрация: 26.05.2015
Сообщений: 9
По умолчанию

Вот годится:
Код:


#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");
}
Kilix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двухсторонние листы nwhta Общие вопросы C/C++ 4 19.05.2015 21:53
Листы ROBERT033 Microsoft Office Excel 10 04.02.2010 12:28
OpenGL и листы Пепел Феникса Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 14.11.2009 12:21
Скрытые листы PapaHedgehog Microsoft Office Excel 1 28.10.2009 17:39
Ссылки на листы Катик7 Microsoft Office Excel 4 11.06.2009 14:31