Стек и дек в языке Си


СТЕК – LIFO – last in first out
(тубус с донышком)

ДЕК – ОЧЕРЕДЬ – FIFO – first in first out
(трубка – можно класть шарики сверху и снизу).

ДЕРЕВЬЯ
(узлы/листья, ветви).
Бинарные деревья

Программная реализация стека на языке Си

Заполняем стек сверху, а не снизу – т.е. с последнего элемента.

#include <cstdlib>
#include <iostream>
 
using namespace std;
 
#define STACK_SIZE 100
// размер стека
 
typedef int stack_t; 
// чтобы можно было работать с "произвольным" типом данных
 
// задаем глобальные переменные
stack_t STACK[STACK_SIZE];
int pos; // позиция предыдущего заполненного элемента
 
// функция инициализации стека, она же используется для очистки
// говорит, что позиция последнего эл-та - вне стека (т.к. размер стека на 1 больше последнего эл.-та)
void StackInit(void)
{
     pos=STACK_SIZE;     
}
 
// функция добавление элементов в стек
int StackPush(stack_t nov)
{
  // проверяем есть ли место в стеке
  if(pos==0) return 0;
  else
  {
   pos--; // добавляем от конца
   STACK[pos]=nov;
   return pos;
  }
}
 
//выталкиваем элемент из стека - возвращаем этот элемент
stack_t StackPop(void)
{
        if(pos==STACK_SIZE) return NULL;
        else
        {
            pos++;
            return STACK[pos-1];
        }
}
 
 
int main(int argc, char *argv[])
{
    stack_t x=5;
    StackInit();
    StackPush(x);
    system("PAUSE");
    return EXIT_SUCCESS;
}

Закрыто