栈的简单实现(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 }