81 lines
1.8 KiB
C
81 lines
1.8 KiB
C
#include <bits/types/stack_t.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include "stack.h"
|
|
|
|
void inspectStack(StackNode *stack)
|
|
{
|
|
if (stack != NULL)
|
|
{
|
|
printf("Der Stack enthält die folgenden Elemente: %d", *(int*)stack->value);
|
|
while (stack->next != NULL)
|
|
{
|
|
printf(" %d", *(int*)stack->next->value);
|
|
stack = stack->next;
|
|
}
|
|
putchar('\n');
|
|
}
|
|
else
|
|
{
|
|
printf("Der Stack ist leer\n");
|
|
}
|
|
}
|
|
|
|
int main()
|
|
{
|
|
StackNode *stack;
|
|
stack = NULL; // initialisierung mit NULL -> leere Liste
|
|
|
|
printf("...ein Element wird eingefügt...\n");
|
|
int toBeRemoved = 42;
|
|
stack = push(stack, &toBeRemoved);
|
|
|
|
inspectStack(stack);
|
|
|
|
printf("...das Element wird wieder entfernt...\n");
|
|
stack = pop(stack);
|
|
|
|
inspectStack(stack);
|
|
|
|
printf("...pop auf leeren Stack...\n");
|
|
stack = pop(stack);
|
|
|
|
inspectStack(stack);
|
|
putchar('\n');
|
|
|
|
int data[5] = {1, 2, 3, 4, 5};
|
|
|
|
// alle 5 werte der reihe nach auf den Satck legen - 1 unten ... 5 oben
|
|
for (int i = 0; i < 5; i++)
|
|
{
|
|
stack = push(stack, &data[i]);
|
|
}
|
|
|
|
|
|
//alle Elemente mit Test-Funktion ausgeben
|
|
inspectStack(stack);
|
|
|
|
// Elemente stück für Stück ausgeben und entfernen
|
|
printf("1. Element war: %d\n", *(int*)top(stack));
|
|
stack = pop(stack);
|
|
printf("2. Element war: %d\n", *(int*)top(stack));
|
|
stack = pop(stack);
|
|
printf("3. Element war: %d\n", *(int*)top(stack));
|
|
stack = pop(stack);
|
|
printf("4. Element war: %d\n", *(int*)top(stack));
|
|
stack = pop(stack);
|
|
printf("5. Element war: %d\n", *(int*)top(stack));
|
|
}
|
|
|
|
/*
|
|
int main()
|
|
{
|
|
UNITY_BEGIN();
|
|
|
|
printf("============================\n Stack tests\n============================\n");
|
|
RUN_TEST(test_createNodeFailsOnZeroData);
|
|
|
|
return UNITY_END();
|
|
}
|
|
*/
|