(和这个课程不相关,不知道该去哪里求教了)这个代码哪里错了,我在vs2013 怎么运行不出来 ,求大神 !!!!

来源:1-1 初始C语言

去南极给企鹅洗热水澡

2015-10-22 15:53

#include<stdio.h>

#include<stdlib.h>

#define LIST_INIT_SIZE 100

#define LISTINCRAMENT 10

#define INFEASIBLE -1

#define OK 1

#define OVERFLOW -2

#define ERROR 0

#define FALSE 0

#define TRUE 1

typedef int Status;

#define STACK_INIT_SIZE 100

#define STACKINCREMENT 10

#define SElemType char

typedef struct{

SElemType *base;

SElemType *top;

int stacksize;

}SqStack;

Status InitStack(SqStack &S){

S.base = (SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));

if (!S.base) exit(OVERFLOW);

S.top = S.base;

S.stacksize = STACK_INIT_SIZE;

return OK;

}

Status GetTop(SqStack &S, SElemType &e){

if (S.top == S.base) return ERROR;

e = *(S.top - 1);

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)exit(OVERFLOW);

S.top = S.base;

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 StackEmpty(SqStack &S){

if (S.top == S.base)

return TRUE;

else

return FALSE;

}


int main(){

SqStack S, H;

char e;

int i, n;

char t[80];

InitStack(S);

InitStack(H);

printf("请输入车厢长度:");

scanf_s("%d", &n);

if (n > 80) exit(OVERFLOW);

printf("请输入硬席(H)和软席车厢(S)序列:");

for (i = 0;i < n; ++i){

scanf_s("%c", &t[i]);

}

for (i = 0; i < n; i++){

if (t[i] == 'H')

Push(H,t[i]);

else 

Push(S,t[i]);

}

while (!StackEmpty(S)){

Pop(S, e);

printf("%c", e);

}

while (!StackEmpty(H)){

Pop(H, e);

printf("%c", e);

}

return 0;

}


写回答 关注

1回答

  • 心悦君夕
    2015-10-23 10:30:53

    报错信息发出来看看?

    去南极给企鹅...

    他没有报错 ,就是输出是不正确的,应该输出的是排列好的“SSSHHH”这种形式呀,可是那里输出的是汉字==

    2015-10-23 20:54:19

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926028 学习 · 20793 问题

查看课程

相似问题