-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStackADT.c
More file actions
64 lines (53 loc) · 1.71 KB
/
Copy pathStackADT.c
File metadata and controls
64 lines (53 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Filename: StackADT.c
/* ΥΛΟΠΟΙΗΣΗ ΣΤΟΙΒΑΣ ΔΥΝΑΜΙΚΑ ΜΕ ΔΕΙΚΤΕΣ*/
#include <stdio.h>
#include <stdlib.h>
#include "StackADT.h"
void CreateStack(StackPointer *Stack)
/* Λειτουργία: Δημιουργεί μια κενή συνδεδεμένη στοίβα.
Επιστρέφει: Μια κενή συνδεδεμένη στοίβα, Stack
*/
{
*Stack = NULL;
}
boolean EmptyStack(StackPointer Stack)
/* Δέχεται: Μια συνδεδεμένη στοίβα, Stack.
Λειτουργία: Ελέγχει αν η Stack είναι κενή.
Επιστρέφει: TRUE αν η στοίβα είναι κενή, FALSE διαφορετικά
*/
{
return (Stack==NULL);
}
void Push(StackPointer *Stack, StackElementType Item)
/* Δέχεται: Μια συνδεδεμένη στοίβα που η κορυφή της δεικτοδοτείται από τον
δείκτη Stack και ένα στοιχείο Item.
Λειτουργία: Εισάγει στην κορυφή της συνδεδεμένης στοίβας, το στοιχείο Item.
Επιστρέφει: Την τροποποιημένη συνδεδεμένη στοίβα
*/
{
StackPointer TempPtr;
TempPtr= (StackPointer)malloc(sizeof(struct StackNode));
TempPtr->Data = Item;
TempPtr->Next = *Stack;
*Stack = TempPtr;
}
void Pop(StackPointer *Stack, StackElementType *Item)
/* Δέχεται: Μια συνδεδεμένη στοίβα που η κορυφή της δεικτοδοτείται από τον δείκτη Stack.
Λειτουργία: Αφαιρεί από την κορυφή της συνδεδεμένης στοίβας,
αν η στοίβα δεν είναι κενή, το στοιχείο Item.
Επιστρέφει: Την τροποποιημένη συνδεδεμένη στοίβα και το στοιχείο Item.
Έξοδος: Μήνυμα κενής στοίβας, αν η συνδεδεμένη στοίβα είναι κενή
*/
{
StackPointer TempPtr;
if (EmptyStack(*Stack)) {
printf("EMPTY Stack\n");
}
else
{
TempPtr = *Stack;
*Item=TempPtr->Data;
*Stack = TempPtr->Next;
free(TempPtr);
}
}