1 #include "stdafx.h"
2 #include <iostream>
3 #include <exception>
4 using namespace std;
5
6 //栈的顺序存储结构及实现
7 //栈的结构定义
8 #define OK 1
9 #define ERROR 0
10 #define TRUE 1
11 #define FALSE 0
12 #define MAXSIZE 5
13 typedef int sElemType;
14 typedef int Status;
15 typedef struct
16 {
17 sElemType data[MAXSIZE];
18 int top;
19 }SqStack;
20 Status Init(SqStack *S)
21 {
22
23 for(int i = 0;i!=MAXSIZE;++i)
24 {
25 S->data[i]=0;
26 }
27 S->top = -1;
28 return OK;
29 }
30 //压栈操作
31 Status Push(SqStack *S,sElemType e)
32 {
33 if(S->top == MAXSIZE - 1)
34 {
35 cout<<"栈满"<<endl;
36 return ERROR;
37 }
38 S->top++;
39 S->data[S->top]=e;
40 return OK;
41 }
42 //出栈操作
43 Status Pop(SqStack *S,sElemType *e)
44 {
45 if(S->top == -1)
46 {
47 cout<<"栈空"<<endl;
48 return ERROR;
49 }
50 *e = S->data[S->top];
51 (S->top)--;
52 return OK;
53 }
54 //输出栈内元素
55 Status ReadStack(const SqStack *S)
56 {
57 cout<<"栈内元素:";
58 for(int i = 0;i<=S->top;++i)
59 {
60 cout<<S->data[i]<<" ";
61 }
62 cout<<endl;
63 return OK;
64 }
65
66 int _tmain(int argc, _TCHAR* argv[])
67 {
68 SqStack *stack = (SqStack*)malloc(sizeof(SqStack));
69 Init(stack);//初始化栈
70 Push(stack,1);//将1入栈
71 Push(stack,2);//将2入栈
72 Push(stack,3);//将3入栈
73 Push(stack,4);//将4入栈
74 ReadStack(stack);//输出栈内元素
75 int popElem = 0;
76 Pop(stack,&popElem);//出栈栈顶值赋予popElem
77 cout<<"出栈:"<<popElem<<endl;
78 Pop(stack,&popElem);//出栈栈顶值赋予popElem
79 cout<<"出栈:"<<popElem<<endl;
80 Pop(stack,&popElem);//出栈栈顶值赋予popElem
81 cout<<"出栈:"<<popElem<<endl;
82 ReadStack(stack);//输出栈内元素
83 Pop(stack,&popElem);//出栈栈顶值赋予popElem
84 cout<<"出栈:"<<popElem<<endl;
85 return 0 ;
86 }