cccccran 2015-10-16 14:54 采纳率: 100%
浏览 1904
已采纳

关于数据结构栈的赋值

#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 这样我给栈顶赋值,编译的时候没问题,为什么执行的时候就会停止工作?求解

  • 写回答

4条回答 默认 最新

  • 摸鱼精英 2015-10-16 15:14
    关注

    s.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
    if(s.base=NULL) return false;
    刚申请完内存,你又赋空值,内存泄露了,当然运行不了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料