C语言数组栈实现模板
本文实例为大家分享了C语言数组栈实现模板的具体代码,供大家参考,具体内容如下
SeqStack.h
#pragmaonce #defineMAX_SIZE1024 typedefstructSEQSTACK { void*data[MAX_SIZE]; intsize; }SeqStack; SeqStack*Init_SeqStack();//初始化栈 voidPush_SeqStack(SeqStack*stack,void*data);//入栈 void*Top_SeqStack(SeqStack*stack);//返回栈顶元素 voidPop_SeqStack(SeqStack*stack);//出栈 intIsEmpty(SeqStack*stack);//判断是否为空 intSize_SeqStack(SeqStack*stack);//返回栈中元素的个数 voidClear_SeqStack(SeqStack*stack);//清空栈 voidFreeSpace_SeqStack(SeqStack*stack);//销毁栈
SeqStack.cpp函数实现
#include"SeqStack.h" #include#include SeqStack*Init_SeqStack() { SeqStack*stack=(SeqStack*)malloc(sizeof(SeqStack)); for(inti=0;i data[i]=NULL; } stack->size=0; returnstack; } voidPush_SeqStack(SeqStack*stack,void*data) { if(stack==NULL) return; if(stack->size==MAX_SIZE)//栈为满 return; if(data==NULL) return; stack->data[stack->size]=data; stack->size++; } void*Top_SeqStack(SeqStack*stack)//返回栈顶元素,不弹出 { if(stack==NULL) returnNULL; if(stack->size==0) returnNULL; returnstack->data[stack->size-1]; } voidPop_SeqStack(SeqStack*stack)//出栈 { if(stack==NULL) return; if(stack->size==0) return; stack->data[stack->size-1]=NULL; stack->size--; } intIsEmpty(SeqStack*stack)//判断是否为空 { if(stack==NULL) return-1; if(stack->size==0) return1; return0; } intSize_SeqStack(SeqStack*stack) { if(stack==NULL) return-1; returnstack->size; } voidClear_SeqStack(SeqStack*stack) { if(stack==NULL) return; for(inti=0;i size;i++) { stack->data[i]=NULL; } stack->size=0; } voidFreeSpace_SeqStack(SeqStack*stack) { if(stack==NULL) return; free(stack); }
数组栈测试程序
#define_CRT_SECURE_NO_WARNINGS #include#include #include #include"SeqStack.h" typedefstructPERSON { charname[64]; intage; }Person; intmain() { SeqStack*stack=Init_SeqStack();//创建栈 Personp1,p2,p3,p4,p5; strcpy(p1.name,"aaa"); strcpy(p2.name,"bbb"); strcpy(p3.name,"ccc"); strcpy(p4.name,"ddd"); strcpy(p5.name,"eee"); p1.age=10; p2.age=20; p3.age=30; p4.age=40; p5.age=50; Push_SeqStack(stack,&p1);//入栈 Push_SeqStack(stack,&p2); Push_SeqStack(stack,&p3); Push_SeqStack(stack,&p4); Push_SeqStack(stack,&p5); while(Size_SeqStack(stack)>0) { Person*person=(Person*)Top_SeqStack(stack); printf("Name:%sAge:%d\n",person->name,person->age); Pop_SeqStack(stack); } //释放内存 FreeSpace_SeqStack(stack); system("pause"); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。