generated from freudenreichan/info2Praktikum-DobleSpiel
Compare commits
4
Commits
16fa87e081
...
JD_Branch
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
db14f57789 | ||
|
|
8a4e0de6cc | ||
|
|
31b4b5c2c7 | ||
|
|
b3f1298149 |
No files matched your search
+1
-1
@@ -1,4 +1,5 @@
|
|||||||
Player1;19887
|
Player1;19887
|
||||||
|
Player1;19843
|
||||||
Lena;19811
|
Lena;19811
|
||||||
Lena;19702
|
Lena;19702
|
||||||
Player1;19578
|
Player1;19578
|
||||||
@@ -7,4 +8,3 @@ Lena;9980
|
|||||||
Lena;9978
|
Lena;9978
|
||||||
Lena;9978
|
Lena;9978
|
||||||
Lena;9976
|
Lena;9976
|
||||||
Lena;9975
|
|
||||||
@@ -4,12 +4,12 @@
|
|||||||
// Push Daten auf den Stack legen.
|
// Push Daten auf den Stack legen.
|
||||||
StackNode *push(StackNode *stack, void *data)
|
StackNode *push(StackNode *stack, void *data)
|
||||||
{
|
{
|
||||||
StackNode *node = (StackNode *)malloc(sizeof(StackNode));
|
StackNode *node = malloc(sizeof(StackNode));
|
||||||
if(node == NULL)
|
if(node == NULL)
|
||||||
return stack; // allocation failed -> return unchanged stack
|
return stack; // allocation failed -> return unchanged stack
|
||||||
|
|
||||||
node->data = data; // Set the data for the new node
|
node->data = data; // Setze Daten
|
||||||
node->next = stack; // New node points to the previous top of the stack
|
node->next = stack; // Setze nächsten Knoten auf aktuellen Stack
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ StackNode *pop(StackNode *stack)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
StackNode *next = stack->next;
|
StackNode *next = stack->next;
|
||||||
// Do NOT free stack->data here; caller owns the pointed data
|
// Speicher des aktuellen Knotens freigeben
|
||||||
free(stack);
|
free(stack);
|
||||||
return next;
|
return next;
|
||||||
}
|
}
|
||||||
|
|||||||
+19
-11
@@ -8,37 +8,45 @@ int main(void)
|
|||||||
StackNode *s = NULL;
|
StackNode *s = NULL;
|
||||||
|
|
||||||
// push 3 integers
|
// push 3 integers
|
||||||
int *a = malloc(sizeof(int)); *a = 1; s = push(s, a);
|
int *a = malloc(sizeof(int));
|
||||||
int *b = malloc(sizeof(int)); *b = 2; s = push(s, b);
|
*a = 1;
|
||||||
int *c = malloc(sizeof(int)); *c = 3; s = push(s, c);
|
s = push(s, a);
|
||||||
|
int *b = malloc(sizeof(int));
|
||||||
|
*b = 2;
|
||||||
|
s = push(s, b);
|
||||||
|
int *c = malloc(sizeof(int));
|
||||||
|
*c = 3;
|
||||||
|
s = push(s, c);
|
||||||
|
|
||||||
// top should be c (3)
|
// oben liegt c (3)
|
||||||
int *topv = (int *)top(s);
|
int *topv = (int *)top(s);
|
||||||
if(topv == NULL || *topv != 3) { fprintf(stderr, "stack top expected 3\n"); return 1; }
|
if(topv == NULL || *topv != 3) { fprintf(stderr, "stack top expected 3\n"); return 1; }
|
||||||
|
|
||||||
// pop -> now top should be 2
|
// oben liegt nun 2
|
||||||
s = pop(s);
|
s = pop(s);
|
||||||
topv = (int *)top(s);
|
topv = (int *)top(s);
|
||||||
if(topv == NULL || *topv != 2) { fprintf(stderr, "stack top expected 2 after pop\n"); return 2; }
|
if(topv == NULL || *topv != 2) { fprintf(stderr, "stack top expected 2 after pop\n"); return 2; }
|
||||||
|
|
||||||
// pop -> now top should be 1
|
// oben liegt nun 1
|
||||||
s = pop(s);
|
s = pop(s);
|
||||||
topv = (int *)top(s);
|
topv = (int *)top(s);
|
||||||
if(topv == NULL || *topv != 1) { fprintf(stderr, "stack top expected 1 after pop\n"); return 3; }
|
if(topv == NULL || *topv != 1) { fprintf(stderr, "stack top expected 1 after pop\n"); return 3; }
|
||||||
|
|
||||||
// pop last
|
// letzen Stapelinhalt holen
|
||||||
s = pop(s);
|
s = pop(s);
|
||||||
if(s != NULL) { fprintf(stderr, "stack expected empty after popping all\n"); return 4; }
|
if(s != NULL) { fprintf(stderr, "stack expected empty after popping all\n"); return 4; }
|
||||||
|
|
||||||
// free stored data (stack does not free data)
|
// Eigenen Speicher freigeben
|
||||||
free(a); free(b); free(c);
|
free(a);
|
||||||
|
free(b);
|
||||||
|
free(c);
|
||||||
|
|
||||||
// test clearStack on empty and small stacks
|
// test clearStack mit leerem Stack
|
||||||
s = push(s, malloc(sizeof(int)));
|
s = push(s, malloc(sizeof(int)));
|
||||||
s = push(s, malloc(sizeof(int)));
|
s = push(s, malloc(sizeof(int)));
|
||||||
clearStack(s); // clearStack must free nodes but not payload; free payloads not necessary because we leaked intentionally for test of API
|
clearStack(s); // clearStack must free nodes but not payload; free payloads not necessary because we leaked intentionally for test of API
|
||||||
// Note: above payloads are not freed (stack API spec); this test ensures clearStack doesn't crash.
|
// Note: above payloads are not freed (stack API spec); this test ensures clearStack doesn't crash.
|
||||||
// Success
|
// Funktioniert alles
|
||||||
printf("test_stack: OK\n");
|
printf("test_stack: OK\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user