栈的简单实现(C语言)

 1 #include <iostream>
 2 #include <stdlib.h>
 3 /*栈最大长度宏*/
 4 #define STACK_MAX_SIZE 100
 5 using namespace std;
 6 /*元素类型*/
 7 typedef int ElemType;
 8 /*顺序栈的结构体*/
 9 typedef struct seqstack{
10     /*存放元素*/
11     ElemType data[STACK_MAX_SIZE];
12     /*栈顶指针 指向元素后一个位置*/
13     size_t p_top;
14     /*栈大小*/
15     size_t stack_size;
16 } SeqStack;
17 /*初始化*/
18 void InitStack(SeqStack *seqstack){
19     seqstack->p_top = 0;
20     seqstack->stack_size = 0;
21 }
22 /*判断栈空 空返回True*/
23 bool StackEmpty(SeqStack seqstack){
24     return (seqstack.stack_size == 0);
25 }
26 /*判断栈满 满返回True*/
27 bool StackFull(SeqStack seqstack){
28     return (seqstack.stack_size == STACK_MAX_SIZE);
29 }
30 /*入栈操作*/
31 bool Push(SeqStack * seqstack, ElemType data){
32     /*如果栈满 返回False*/
33     if(StackFull(*seqstack)) return 0;
34     /*写入元素值,栈顶指针向后移动*/
35     seqstack->data[seqstack->p_top++] = data;
36     /*修改长度*/
37     seqstack->stack_size++;
38     return 1;
39 }
40 bool Pop(SeqStack* seqstack, ElemType* data){
41     /*如果空栈,返回False*/
42     if(StackEmpty(*seqstack)) return 0;
43     /*由于栈顶指针指向栈顶元素后一个位置,需要-1*/
44     (*data) = seqstack->data[seqstack->p_top -1];
45     /*修改栈的长度*/
46     seqstack->stack_size--;
47     /*栈顶向前移动*/
48     seqstack->p_top--;
49     return 1;
50 }
51 int main()
52 {
53     SeqStack mystack;
54     InitStack(&mystack);
55     Push(&mystack, 5);
56     Push(&mystack, 6);
57     int a = -1;
58     Pop(&mystack, &a);
59     cout << a << endl;
60     return 0;
61 }

 

posted @ 2020-05-01 10:52  wkfxm  阅读(300)  评论(0编辑  收藏  举报