栈的基本操作:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#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. ----\r\n");
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;
}
测试结果:
总结:
栈的相关操作还是比较简单,只要严格按照先进后出的标准,写代码时注意规范,指针不要乱指就没有问题