#include
using namespace std;
typedef int SElemType; //ÕâÀï¿ÉÐÞ¸ÄÕ»ÖÐËù´æµÄÔªËØ
#define STACK_INIT_SIZE 100 //¶¨Òå³õʼ»¯Õ»Ê±µÄ×î´óÖµ
#define STACKINCREMENT 10 //¶¨Òåջÿ´ÎÔö¼ÓµÄ´æ´¢¿Õ¼ä´óС
typedef struct{
SElemType *base; //¶¨Òå½á¹¹Ìå:Õ»
SElemType *top;
int stacksize;
}SqStack;
bool InitStack(SqStack &s){ //Õ»µÄ³õʼ»¯º¯Êý
s.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(s.base=NULL) return false;
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return true;
}
bool GetTop(SqStack s,SElemType &e){
if(s.top==s.base) return false;
e=*(s.top-1); //topÖ¸Õë×ÜÊÇÖ¸Ïò×îÍâÔªËصÄÉÏ·½
return true;
}
bool Push(SqStack &s,SElemType e){ //ѹջ£¬¶ÁÈ¡Êý¾Ý½øÈëÕ»
if(s.top-s.base>=STACK_INIT_SIZE){
s.base=(SElemType *)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(s.base==NULL) return false;
s.top=s.base+s.stacksize; //½«topÖ¸ÕëÖÃÓÚÕ»¶¥
s.stacksize+=STACKINCREMENT;
}
*(s.top)=e; //ÏȶÔtopÖ¸ÕëËùÖ¸ÔªËظ³Öµ£¬ÔÙ½«topÖ¸ÕëÖÃÓÚÕ»¶¥
s.top++;
return true;
}
bool Pop(SqStack &s,SElemType &e){ //µ¯³öÔªËØe ´«µÝÒýÓÃ
if(s.base==s.top) return false;
s.top--; //ÏȽ«top×Ô¼õ£¬È»ºó²ÅÄÜÈ¡µ½Õ»¶¥ÔªËØ
e=*s.top;
return true;
}
void main(){
SqStack s;
int elem=1;
InitStack(s);
*(s.top)=5;
cout<<*s.base<<endl;
// Push(s,elem);
/* for(int i=1;i<=2;i++){
Pop(s,elem);
cout<<elem<<endl;
}*/
}
用的是vc++6.0 这样我给栈顶赋值,编译的时候没问题,为什么执行的时候就会停止工作?求解