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条)

报告相同问题?

悬赏问题

  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行