栈的基本操作:
#include#include #include #define overflow 1 #define MAXSIZE 11 typedef struct node_ { int *top; int *bottom; int length; }*node,Node; //初始化 void inistack(node &l){ l=(node)malloc(sizeof(Node)); l->bottom=(int *)malloc(sizeof(int)*MAXSIZE); if (!l->bottom){ printf("内存分配失败!!"); exit(overflow); } l->top=l->bottom; l->length=MAXSIZE; } //压栈 void pushstack(node &l,int n){ if (l->top-l->bottom==l->length){ printf("栈空间已满!!!"); exit(overflow); } *(l->top)=n; l->top++; } //出栈 void popstack(node &l){ if(l->top==l->bottom){ printf("栈已经为空了!!"); exit(overflow); } l->top--; } //打印 void printfstack(node l){ if(l->bottom==l->top){ printf("栈为空!!"); exit(overflow); } int *m; for(m=l->bottom;m!=l->top;m++){ printf("%d ",*m); } printf("n"); } //测试 void testsample(){ printf("---- Test begins. ----rn"); node l; inistack(l); pushstack(l,1); pushstack(l,2); pushstack(l,3); pushstack(l,4); pushstack(l,5); printf("压栈后:"); printfstack(l); printf("出栈后:"); popstack(l); popstack(l); printfstack(l); } int main(){ testsample(); return 0; }
测试结果:
总结:
栈的相关操作还是比较简单,只要严格按照先进后出的标准,写代码时注意规范,指针不要乱指就没有问题



