Скачиваний:
5
Добавлен:
18.03.2018
Размер:
1.52 Кб
Скачать
/*Структура данных - стек, структура хранения - односвязный список*/

#include <stdio.h>
#include <stdlib.h>
#define DataType int
#define ELEMENT struct Element
#define STACK struct Element *

struct Element
{
	DataType element;
	struct Element *next;
};

void MakeNull (STACK *pstack);	/*пустой стек*/
int Empty (STACK *pstack);		/*стек пуст*/
int Full (STACK *pstack);       /*стек полон*/
DataType Top (STACK *pstack);		/*элемент с вершины*/
DataType Pop (STACK *pstack);		/*удаление элемента*/
int Push (DataType x, STACK *pstack);	    /*добавление элемента*/

int main()
{
STACK stack;
int i;
MakeNull(&stack);
for (i=1; i<6; i++)
	Push (i, &stack);
while (!Empty(&stack))
	printf("%d ", Pop(&stack));
system("pause");
return 0;
}

void MakeNull (STACK *pstack)
{
	*pstack = NULL;
}
 
int Empty(STACK * pstack)
{
	if (*pstack==NULL)
		return 1;
	else
		return 0;
}

int Full (STACK *pstack)
{
   ELEMENT * temp = (ELEMENT *) malloc (sizeof (ELEMENT));
   if  (temp==NULL) return 1;
   free (temp);
   return 0;
}

DataType Top (STACK *pstack)
{
    return (*pstack)->element;
}

DataType Pop (STACK *pstack)
{
	DataType temp;
    ELEMENT *del = *pstack;
	*pstack = (*pstack)->next;
	temp = del->element;
	free (del);
	return temp;
}

int Push (DataType x, STACK *pstack)
{
	ELEMENT *ins;
	ins = (ELEMENT *) malloc (sizeof (ELEMENT));
	if (ins==NULL) return 0;
	ins->element = x;
	ins->next = *pstack;
	*pstack = ins;
	return 1;
}
Соседние файлы в папке Стек