Добавил:
FluffyUnicorn
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Структуры данных примеры / Стек / stacklist
.c/*Структура данных - стек, структура хранения - односвязный список*/
#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;
}
Соседние файлы в папке Стек