Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Open sidebar
programmieren_in_C
2020_21_Codebeispiele
Commits
d53f98b1
Commit
d53f98b1
authored
Feb 08, 2021
by
Paffenholz, Andreas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
programs app A
parent
5fe4aa7e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
172 additions
and
0 deletions
+172
-0
skript/anhang_A/stack.c
skript/anhang_A/stack.c
+89
-0
skript/anhang_A/stack.h
skript/anhang_A/stack.h
+38
-0
skript/anhang_A/stack_main.c
skript/anhang_A/stack_main.c
+45
-0
No files found.
skript/anhang_A/stack.c
0 → 100644
View file @
d53f98b1
/*************************************
* Beispielprogramm zur Vorlesung
* Einfuehrung in die Programmierung I
* Andreas Paffenholz
* TU Darmstadt, Wintersemester 2020/21
* (c) 2020-
*
* stack, Implementierung
*
**************************************/
#include<stdio.h>
#include<stdlib.h>
#include <limits.h>
#include "stack.h"
/*
* Initialisieren und Löschen des Stapels
*/
static
struct
node
*
init_node
(
int
value
)
{
struct
node
*
node
=
(
struct
node
*
)
malloc
(
sizeof
(
struct
node
));
node
->
value
=
value
;
node
->
next
=
NULL
;
return
node
;
}
static
void
free_node
(
struct
node
*
node
)
{
free
(
node
);
}
void
free_stack
(
struct
node
*
node
)
{
struct
node
*
keep
=
NULL
;
while
(
node
!=
NULL
)
{
keep
=
node
;
node
=
node
->
next
;
free_node
(
keep
);
}
}
/*
* Standardfunktionen
*/
void
push
(
struct
node
**
head_ptr
,
int
value
)
{
struct
node
*
new_node
=
init_node
(
value
);
new_node
->
next
=
*
head_ptr
;
*
head_ptr
=
new_node
;
}
int
pop
(
struct
node
**
head_ptr
)
{
int
value
=
INT_MIN
;
if
(
*
head_ptr
)
{
struct
node
*
node
=
*
head_ptr
;
value
=
node
->
value
;
*
head_ptr
=
node
->
next
;
free
(
node
);
}
return
value
;
}
int
stack_is_empty
(
struct
node
**
head_ptr
)
{
return
(
*
head_ptr
==
NULL
);
}
int
peek_stack
(
struct
node
**
head_ptr
)
{
int
value
=
INT_MIN
;
if
(
*
head_ptr
)
{
value
=
(
*
head_ptr
)
->
value
;
}
return
value
;
}
/*
* I/O
*/
void
print_stack
(
const
struct
node
*
node
)
{
static
int
count
=
1
;
printf
(
"Aufruf %d, die Liste enthaelt: "
,
count
++
);
while
(
node
!=
NULL
)
{
printf
(
"%d "
,
node
->
value
);
node
=
node
->
next
;
}
printf
(
"
\n
"
);
}
skript/anhang_A/stack.h
0 → 100644
View file @
d53f98b1
/*************************************
* Beispielprogramm zur Vorlesung
* Einfuehrung in die Programmierung I
* Andreas Paffenholz
* TU Darmstadt, Wintersemester 2020/21
* (c) 2020-
*
* stack, Header
*
**************************************/
#ifndef STACK_H
#define STACK_H
#ifndef NODE_STRUCT
#define NODE_STRUCT
// Element
struct
node
{
int
value
;
struct
node
*
next
;
};
#endif
/* Initialisieren und Löschen des Stapels */
void
free_stack
(
struct
node
*
);
/* Standardfunktionen */
void
push
(
struct
node
**
,
int
);
int
pop
(
struct
node
**
);
int
stack_is_empty
(
struct
node
**
);
int
peek_stack
(
struct
node
**
);
/* I/O */
void
print_stack
(
const
struct
node
*
);
#endif
skript/anhang_A/stack_main.c
0 → 100644
View file @
d53f98b1
/*************************************
* Beispielprogramm zur Vorlesung
* Einfuehrung in die Programmierung I
* Andreas Paffenholz
* TU Darmstadt, Wintersemester 2020/21
* (c) 2020-
*
* stack, main
*
* Uebersetzen mit
* gcc stack_main.c stack.c -o stack
* Aufruf mit
* ./stack
**************************************/
#include <stdio.h>
#include <stdlib.h>
#include "stack.h"
int
main
()
{
// Initialisierung
struct
node
*
head
=
NULL
;
push
(
&
head
,
17
);
push
(
&
head
,
22
);
push
(
&
head
,
30
);
print_stack
(
head
);
int
value
=
pop
(
&
head
);
printf
(
"Wert %d zurueckbekommen
\n
"
,
value
);
print_stack
(
head
);
printf
(
"Liste ist leer: %s
\n
"
,
stack_is_empty
(
&
head
)
?
"ja"
:
"nein"
);
printf
(
"Das naechste Element ist %d
\n
"
,
peek_stack
(
&
head
));
pop
(
&
head
);
value
=
pop
(
&
head
);
printf
(
"Wert %d zurueckbekommen
\n
"
,
value
);
printf
(
"Liste ist leer: %s
\n
"
,
stack_is_empty
(
&
head
)
?
"ja"
:
"nein"
);
free_stack
(
head
);
return
0
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment