数据结构上机答案(6)

2019-02-15 19:37

return OK; }

Status DestroyStack(SqStack &S) { free(S.base); S.base=NULL; S.top=NULL; S.stacksize=0; return OK; }

Status Push(SqStack &S,SElemType e) { if(S.top-S.base>=S.stacksize) { S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType)); if(!S.base) return 0; S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; return OK; }

Status Pop(SqStack &S,SElemType &e) { if(S.top==S.base) return ERROR; e=*--S.top; return OK; }

Status StackTraverse(SqStack S,Status(*visit)(SElemType)) { while(S.top>S.base) visit(*S.base++); printf(\ return OK; }

Status visit(SElemType c)

{ printf(\ return OK; }

void LineEdit() { SqStack s; char ch,c; int n,i; InitStack(s); scanf(\ ch=getchar(); for(i=1;i<=n;i++) { ch=getchar(); while(ch!='\\n') { switch(ch) { case '#': Pop(s,c); break; case '@': ClearStack(s); break; default:Push(s,ch); } ch=getchar(); } StackTraverse(s,visit); ClearStack(s); } DestroyStack(s); }

int main() { LineEdit(); return 1; }

2.6表达式求值 #include #include #define OK 1 #define ERROR 0

#define STACK_INIT_SIZE 100

#define STACKINCREMENT 10

typedef int Status;

struct SqStack_T { char *base; char *top; int stacksize; };

struct SqStack_N { int *base; int *top; int stacksize; };

Status InitStack_T(SqStack_T &S) { S.base=(char*)malloc(STACK_INIT_SIZE*sizeof(char)); if(!S.base) return ERROR; S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; }

Status InitStack_N(SqStack_N &S) { S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int)); if(!S.base) return ERROR; S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; }

int Push_T(SqStack_T &S,char e) { if(S.top-S.base>=S.stacksize) { S.base=(char*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char)); if(!S.base)

return ERROR; S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; return OK; }

int Push_N(SqStack_N &S,int e) { if(S.top-S.base>=S.stacksize) { S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int)); if(!S.base) return ERROR; S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; return OK; }

int Pop_T(SqStack_T &S,char &e) { if(S.top==S.base) return ERROR; e=*--S.top; return OK; }

int Pop_N(SqStack_N &S,int &e) { if(S.top==S.base) return ERROR; e=*--S.top; return OK; }

char GetTop_T(SqStack_T S) { char e; if(S.top==S.base) return ERROR; e=*(S.top-1);

return e; }

int GetTop_N(SqStack_N S) { int e; if(S.top==S.base) return ERROR; e=*(S.top-1); return e; }

char Precede(char theta1,char theta2) { int a,b; switch(theta1) { case '+': a=2; break; case '-': a=2; break; case '*': a=4; break; case '/': a=4; break; case '(': a=0; break; case ')': a=6; break; case '=': a=-1; break; } switch(theta2) { case '+': b=1; break; case '-': b=1; break; case '*': b=3; break; case '/': b=3; break; case '(': b=6; break; case ')': b=0; break; case '=': b=-1; break; } if(a'; }


数据结构上机答案(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:线塔3 混凝土电杆组立检查及评级记录表

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: