|
- #include <stdio.h>
, y7 m+ {9 V2 O8 }8 A& N) \- i - #include <stdbool.h>
) u: c; D2 h2 k7 {( I! n, u- E - #include <malloc.h>/ P$ F# l6 l% V3 _
- typedef int DataType;
4 r2 f0 x7 Q# d: k2 h, B - typedef struct stacknode
3 h5 x- h f7 \5 Q: B. u; { - {
% w% t4 B- X+ u" k - struct LinkStack *next;6 w- O. K6 P$ W# ^/ y' R
- DataType data;
V8 }$ g+ p0 X7 C% Q" s4 ? - ; {, O- E# t% I8 b, x) }1 S
- }LinkStack;- [% Z3 \/ l' g% X
- LinkStack *InitStack()
" c5 H" t7 n( ~9 \# j - {
! }" z; [7 {! {# l6 v1 x% f - LinkStack *s=(LinkStack *)malloc(sizeof(LinkStack));- p) s# h+ U4 M: D2 J0 d0 o( n
- (*s).next=NULL;
* L$ p M: _1 j$ c - printf("初始化栈成功!\n");0 p7 e) d7 a1 {' g6 ?
- return s;9 I" K2 h( k" g" i2 ^
- 8 \8 M& m6 \1 G* G7 O! [* G
- }2 o y3 {( Z h; B: l
- int getStackLength(LinkStack *s)
4 P. G3 r8 H- @ - {
8 e9 [. J9 t. p$ r. C - int count=0;# Y I. K8 Q: y( R4 a
- for(;(*s).next!=NULL;)% m. z/ n8 J& h6 s2 a
- {6 {6 o6 X, ]! p1 ]! P# G
- count++;
+ u$ B. K& r0 d0 E" N) }5 { - s=(*s).next;% e% z# h6 U: X* \
- }( p8 p$ e; {% s8 A7 ]
- return count;' m4 ~3 w, x8 `5 g
$ |( r) C) h( |) p1 Z& S- }. a- D) r* Z1 L+ s2 D
- void DestroyStack(LinkStack *s)5 S7 \ U3 Q6 F; K* h5 d
- {
5 ^; v! [1 K0 l8 I* _* X, ]6 p -
8 k1 n5 A! q( f }; c1 z - int num=getStackLength(s);# V" g9 }$ b% ^/ h$ J
-
. x8 U: R+ a. `0 W - for(int i=0;i!=num;++i)
% o9 d4 g9 U% }8 E& ^/ x - {# S( z7 K9 o% P. e
- pop(s);) ?. {& D* c4 b( |
- }
; u9 C7 O9 G/ Y3 [- P p/ I, F4 v+ B -
- O5 n& Z* ~" H1 K -
' `9 L, P; T! f; E0 o, [" ~ - printf("删除成功!\n");. g9 ?& |' o |4 M: {
- }; _( _. Y/ r3 t4 b
2 _& v- | }1 ^- K* e; q- + E1 V! _ h8 X2 g) u! _ @
- void EmptyStack(LinkStack *s)% d) G, E8 h; T9 \
- {
! O& n2 r1 f9 m/ s* m - if((*s).next==NULL?true:false)
6 I# }' d+ o9 v( s1 y - {/ S; Z- _; r) h' |8 I4 u! |
- printf("为空表!\n");
7 g7 _9 E' J2 i - }
9 W% G5 ?3 ]" V$ y" ?) N; Y - else printf("不为空表!\n");' P' h2 @4 Q e4 {
- }+ A! l% z, f/ c0 O
- void push(LinkStack *s)
( C/ o d- T& z( s - {8 y: W1 i- p4 b" A
- 6 _9 W: @6 ]' j! N
- printf("请输入要存入栈里面的元素个数!\n");
# D' k' T! w6 _1 M2 w - int num;
/ E8 W8 \" v" c: S9 j* U- j - scanf("%d",&num);
# [! E& z8 }1 t2 {( m. F - printf("请输入元素值!\n");
5 j5 }, e1 ^1 t0 x: ~( }) V! x' k - for(int i=0;i!=num;++i)- z) p7 Q5 }# v% S A
- { R- M& ? t) `+ \8 |( U" M) X
- LinkStack *p=(LinkStack*)malloc(sizeof(LinkStack));. ^/ r: ]" Z. X g) n0 a
-
: |/ p4 G5 e5 O. J, w, e% o; e - scanf("%d",&((*p).data));
8 }" z3 }- Y6 Y4 B3 F3 v - (*s).next=p;
2 N/ z7 ~7 I+ R y" O - (*p).next=NULL;5 l) C3 P+ F1 |7 _! O
- s=p;
5 i" R0 n) m4 K( a - 8 a3 q. Q5 {9 }" z" e
- }( Q, [# X! s9 V
- printf("入栈成功!\n");
5 x& V1 q6 O$ ?2 c( D' k. ?% o -
: p" L' f9 {: N- u" `) O. q; F* a - + L0 Y( H1 ^2 M7 L
- 0 ]& K, T& w6 A* G% x t
- ! r' t, w8 J( f; z/ _9 M+ Y8 N
- }
7 @$ {4 i* P7 X# x0 j" D - DataType pop(LinkStack *s)
1 o' p+ b# e5 I) } - {
J& G4 P; k: Z k4 D8 {3 }# U; L - LinkStack *p,*p1=s;$ \0 ]5 @1 p2 L1 V
- for(;(*s).next!=NULL;)
- B9 M: I6 {8 L! G$ Y& x- q - {1 w( A" x- H7 z. \
- p=s;
% h* y" {0 F. P: I - s=(*s).next;
! S- \6 B1 w! O) }, K+ n/ h( \$ V - }& H* D' W0 x5 G0 i
- 7 \8 L' \& o7 E6 ~/ X
- DataType data=(*s).data;
4 d8 r7 f8 ~, s/ o6 m! o - (*p).next=NULL;
2 O6 v& v' v! T1 N2 V" S - free(p);5 V: o3 Q0 i1 h5 C$ v+ ?
- s=p1;
9 B$ w B% h, y. g O - free(p1);
3 }- x5 }# B3 U8 i/ n. k/ s - return data;
8 T/ h4 k! G7 q: c& t -
) x% V% B% `* M! n9 `( E" h% @* V4 L - - c9 z+ c" }( A" ]
- }
+ G7 Y) B0 I3 Z4 ^* h. y+ J. { - 4 T- p. Q! {7 g% g4 Q6 T5 `% o' [
- LinkStack *getTop(LinkStack *s)6 \# U. ^5 r+ y& h
- {; j: @/ a9 o/ V* g
- LinkStack *p=s,*p1;3 R( k. K H; F4 w2 \6 [; s, K, B3 K: L
- for(;(*s).next!=NULL;)0 D$ v- K) Z0 E; H' F" _
- {
* w; Y- [: X6 d4 u' E5 | - s=(*s).next;
4 e4 m+ F! y4 o# N2 I1 k! v - }2 y6 V$ z# y+ c
- p1=s;9 e% y0 e: a6 z
- s=p;
3 y ~' W- D; B+ j4 I" L - return p1;' q Z7 m: z) Q$ P/ a
- }: e9 g7 n. F0 N5 x# G* e
# M' P1 R& F( h" s- " I/ m5 w3 p. K: a/ \$ \; @, @
- : u' x. d% w L k- R: Z% b
- : o! e! }# ]9 [
- main()
/ S& |$ `% L, y% ^ - {
% J2 F: o/ ^/ s: ?: Q# }+ r - LinkStack *test;/ E* j/ `! p* k0 v" d) c
- test=InitStack();
% l8 s- _7 v6 v - EmptyStack(test);
" S; p6 ?) r! P; @& Y - push(test);
2 |7 t( n$ S; { - //printf("%d\n",getTop(test)->data);$ g8 D9 a _% _1 s- @; t
- // pop(test);: r3 R+ [: E8 M' k) u$ I( f' W
-
4 N* Z( Y! z a1 E% ]! E; C -
: e c) |; _7 e1 X2 A - //EmptyStack(test);. ?6 i- o: N0 f& x, [6 z
- DestroyStack(test);
* t: g! _% f" K/ ` - // printf("%d\n",getTop(test)->data);
2 ~( `; o) q z; \7 S - printf("%d\n", getStackLength(test));
: \, E1 ? ?8 S$ Q6 o5 y - EmptyStack(test);! c$ i) ~1 c# q% [
- $ j' e# K1 A5 b, B9 O
- : S+ l2 ]9 e P" P" b5 \- \
- return 0;
9 V" N+ x9 j1 \ - }7 y) R* C; i- M% D9 B" R
-
复制代码 |
|