summaryrefslogtreecommitdiff
path: root/c/dataStructure/栈和队列//链栈/stack.c
diff options
context:
space:
mode:
authorgarhve <git@garhve.com>2022-12-05 19:43:39 +0800
committergarhve <git@garhve.com>2022-12-05 19:43:39 +0800
commitc6bc541ab58363d783e60a007e80e9bf9e231fda (patch)
treea59c7ed0d05225c5876f3e5e919d4f6ed0c447ff /c/dataStructure/栈和队列/栈/链栈/stack.c
initialize
Diffstat (limited to 'c/dataStructure/栈和队列/栈/链栈/stack.c')
-rwxr-xr-xc/dataStructure/栈和队列/栈/链栈/stack.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/c/dataStructure/栈和队列/栈/链栈/stack.c b/c/dataStructure/栈和队列/栈/链栈/stack.c
new file mode 100755
index 0000000..e47dd81
--- /dev/null
+++ b/c/dataStructure/栈和队列/栈/链栈/stack.c
@@ -0,0 +1,56 @@
+#include "stack.h"
+
+bool InitStack(Stack * s) {
+ *s = NULL;
+ return true;
+}
+
+bool DestroyStack(Stack * s) {
+ Stack p;
+
+ while (*s) {
+ p = *s;
+ *s = (*s)->next;
+ free (p);
+ }
+ return true;
+}
+
+bool Push(Stack * s, ElemType n) {
+ Stack p = (stack *) malloc (sizeof(stack));
+ if (!p) {
+ fprintf(stderr,"No enough memory\n");
+ return false;
+ }
+ p->data = n;
+ p->next = *s;
+
+ *s = p;
+
+ return true;
+}
+
+bool Pop(Stack * s, ElemType * n) {
+ if (!*s) {
+ fprintf(stderr,"No element in stack!\n");
+ return false;
+ }
+ *n = (*s)->data;
+ Stack p = *s;
+ *s = (*s)->next;
+ free(p);
+
+ return true;
+}
+
+ElemType GetTop(Stack * s) {
+ if (*s)
+ return (*s)->data;
+ return -1;
+}
+
+bool StackIsEmpty (Stack * s) {
+ if (!*s)
+ return true;
+ return false;
+} \ No newline at end of file