Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт до лабораторної роботи №3
“ Структура даних „СТЕК” ”
Варіант№15
Виконав:
ст.гр. КІ
Львів 2007
Мета Роботи:
Дослідити СТРУКТУРУ ДАНИХ “СТЕК”.
2. Постановка задачі
Реалізуйте послідовний стек, у якому до опису стеку додано ще дві змінні EMPTY i FULL, замість функцій EMPTY і FULL. Перепишіть основні операції роботи зі стеком і продемонструйте динаміку вмісту стеку
Текст програми
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define size 2
#define infotype int
#define printfspec "%d "
struct stacktype
{ infotype data[size];
int top,EMPTY,FULL;
} ;
typedef struct stacktype stack;
void Init(stack *s);
void Push(stack *s, infotype new_data);
infotype Pop(stack *s);
void Print(stack *s);
void main()
{ stack ST;
infotype x;
Init(&ST);
printf("\nEnter elements in the stack:\n");
do
{ printf("Enter the new element(zero - break inputing elements): ");
scanf("%d",&x);
if (x)
Push(&ST,x);
}
while (x);
Print(&ST);
x=Pop(&ST);
Print(&ST);
Pop(&ST);
Print(&ST);
Pop(&ST);
Print(&ST);
Push(&ST,x);
Print(&ST);
getch();
return;
}
void Init(stack *s)
{ s->EMPTY=1;
s->FULL=0;
s->top=-1;
return;
}
void Push(stack *s, infotype new_data)
{ if (s->FULL)
printf(" Error : Stack overflowed! \n");
else
s->data[++s->top] = new_data;
s->EMPTY=0;
if(s->top+1==size)
s->FULL=1;
else
s->FULL=0;
return;
}
infotype Pop(stack *s)
{ if (s->EMPTY)
{ printf(" Error : Stack is empty! \n");
return 0;
}
else{
s->FULL=0;
if(s->top==0)
s->EMPTY=1;
else
s->EMPTY=0;
return s->data[s->top--];}
}
void Print(stack *s)
{ int i;
printf("Elements of stack: ");
if (s->EMPTY)
printf("Stack is empty! \n");
else
{ for (i=0;i<=s->top;i++) printf(printfspec,s->data[i]);
printf("\n");
}
return;
}
Результати виконання програм
Висновок: На данній лабораторній роботі було досліджено СТРУКТУРУ ДАНИХ “ СТЕК”.