Пятница, 26.04.2024
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Alexander, Firefrominside  
Форум » Другие языки программирования » С++ » Реализация стека.

Реализация стека.
AlexanderДата: Среда, 27.05.2009, 03:02 | Сообщение # 1
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Стек- это одна из самых простых и распространённых структур данных, которая представляет из себя упорядоченный набор элементов, в котором размещение элементов и их удаление осуществляется только с одного конца.
Основные операции со стеком:
Удобнее всего создать класс для работы со стеком, описание которого будет выглядеть примерно так:
Code
struct ELEMENT//элемент стека
{
     int Content;
     ELEMENT* Next;
};
typedef ELEMENT *LPELEMENT;//указатель на элемент стека
class STACK
{
public:
     STACK();//конструктор
     ~STACK();//деструктор
     bool Push(int Content);//добавление элемента
     bool Pop(int &Content);//изъятие элемента
     void Clear();//очистка стека
     int Length();//определение количества элементов в стеке
     void OutPut();//Вывод стека
private:
     LPELEMENT Start;//Начало стека
};

Основные процедуры- добавление элемента:
Code
bool STACK::Push(int Content)//Добавляет в начало стека элемент со значением Content,
{      //в случае успешного добавления элемента вернёт true, иначе- false
     LPELEMENT NE=new ELEMENT;
     if(!NE)
      return false;
     NE->Content=Content;
     NE->Next=Start;
     Start=NE;
     return true;
}

Извлечение элемента:
Code
bool STACK::Pop(int &Content)//Извлекает из стека элемент в переменную Content
{      //в случае успешного извлечения элемента вернёт true, иначе- false
     if(!Start)
      return false;
     Content=Start->Content;
     LPELEMENT Temp=Start;
     Start=Start->Next;
     delete Temp;
     return true;
}

Очистка стека:
Code
void STACK::Clear()//очищает стек
{
     LPELEMENT Temp;
     while(Start)
     {
      Temp=Start;
      Start=Start->Next;
      delete Temp;
     }
     return;
}

Подсчёт количества элементов в стеке:
Code
int STACK::Length()//Возвращает число элементов в стеке
{
     LPELEMENT Temp;
     unsigned int i=0;
     while(Start)
     {
      Temp=Start;
      Start=Start->Next;
      i++;
     }
     return i;
}

Вывод на экран всех элементов:
Code
void STACK::OutPut()//выводит в консоль все элементы стека
{
     if(!Start)
     {
      printf("стек пуст\n");
      return;
     }
     LPELEMENT Temp=Start;
     while(Temp)
     {
      printf("%i\n",Temp->Content);
      Temp=Temp->Next;
     }
}

Полный исходник демонстрационной программы прикрепляю к сообщению.
Прикрепления: stack.cpp (2.4 Kb)


Скажем дружно- нафиг нужно!
 
FirefrominsideДата: Понедельник, 16.11.2009, 01:50 | Сообщение # 2
Уже "свой"
Группа: Модераторы
Сообщений: 85
Репутация: 0
Замечания: 0%
Статус: Offline
Если надо, ногу выложить организацию стека и очереди, ф-ции которых будут запрашивать указатель на эл-нт.

Большая просьба выкладывать хоть какой-то код Вашей программы.
Это поможет найти общий язык между Вами и нами! =)
И не забываем благодарить за помощь=)
Нужна помощь с задача С++? тебе сюда bc-for-all.ucoz.ru
 
111Дата: Четверг, 03.11.2011, 20:11 | Сообщение # 3
Новичок
Группа: Пользователи
Сообщений: 1
Репутация: 0
Замечания: 0%
Статус: Offline
Firefrominside,
Здравствуйте!
А Вы могли бы выложить программу созданием списка, очереди и стека?
 
Форум » Другие языки программирования » С++ » Реализация стека.
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2024
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;