本文共 1269 字,大约阅读时间需要 4 分钟。
#define Stack_Init_Size 100
#define StackIncreament 10#include<stdio.h>#include<malloc.h>typedef struct{ int *top; int *base; int stacksize;}SqStack;//定义栈 void Push(SqStack &s, int e){ if(s.top -s.base >=s.stacksize) {//本满,追加存储空间 s.base=(int *)realloc(s.base, (s.stacksize+StackIncreament)*sizeof(int)); if(!s.base) printf("error/n"); s.top=s.base+s.stacksize; s.stacksize+=StackIncreament; } *s.top++=e;}//向栈顶插入元素e void InitStack(SqStack &s){ s.base=(int *)malloc(Stack_Init_Size*sizeof(int)); //栈底地址 if(!s.base) printf("error/n"); s.top=s.base; s.stacksize =Stack_Init_Size;//构造空栈 printf("输入6个栈元素:"); for(int i=0;i<6;i++) { int a; scanf("%d",&a); Push(s,a);//向栈中插元素 }}//初始化栈int StackEmpty(SqStack s)
{ if(s.top ==s.base ) return 1; else return 0;}//判断栈是否为空
void Pop(SqStack &s, int &e)
{ if(s.top ==s.base ) printf("error2/n"); e=*--s.top ;}//删除栈顶元素void Print(SqStack s)
{ while(!StackEmpty(s)) { int e; Pop(s,e); printf("%d ",e); }}//输出栈元素void GetTop(SqStack s,int &e)
{ if(s.base ==s.top ) printf("error3/n"); e=*(s.top -1);}//取栈顶元素int StackLength(SqStack s)
{ return (s.top-s.base);}
main()
{ int a;//存储栈顶元素 int b;//存储栈的长度 SqStack s; InitStack(s); Print( s); GetTop(s,a); b=StackLength(s); printf("所取栈顶元素:%d/b",a); printf("栈的长度:%d",b); return 0;}转载地址:http://icmvi.baihongyu.com/