Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний Університет « Львівська Політехніка»
Кафедра ЕОМ
Звіт
до лабораторної роботи №4
на тему: « Структура даних „ЧЕРГА”.»
Варіант 15.
Виконав:
ст. гр. КІ-1
Львів-2007
Назва роботи: Структури даних “черга”.
Мета роботи: Закріпити теоретичні знання та оволодіти практичними навиками опрацювання структур даних “черга”. Засвоїти техніку створення та опрацювання складних типів даних.
Теоретична частина:
Чергою називається впорядкований набір елементів які можуть вилучатись з одного його кінця, який називається початком черги і додаватися в її кінець, який називається кінцем черги.
Дег – об’єднання черги і стеку, де додавання і вилучення можливе з двох її кінців.
Виконання роботи
Завдання:
Змоделюйте чергу за допомогою двух стеків, представлених за допомогою вказівників. Додавання елементу до черги зводиться до додавання до одному зі стеков, а перевірка, чи черга порожня - до перевірки, чи порожні обидва стеки. При вилученні елемента з черги можливі два випадки. Якщо стек, де знаходиться початок черги, не порожній, то вилучається з нього елемент. Якщо він порожній, то попередньо в нього переписуються всі елементи другого стеку, змінюючи порядок (це відбувається саме при перекладанні зі стеку в стек) і далі задача зводиться до першого випадку.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define size 10
#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;
}
Результат виконання
Висновок:
Закріпив теоретичні знання та оволодів практичними навиками опрацювання структур даних “Черга”. Засвоїв техніку створення та опрацювання складних типів даних.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!