Hold_C 2017-10-18 15:39 采纳率: 20%
浏览 3689
已采纳

数据结构之栈的应用车厢调度的问题

题目:借助栈 把字符数组train中的字符S都调到字符H的前面
示例:“HSHSHSHSHS”-->"SSSSSHHHHH"
出错描述:编译器显示 弹出“停止工作”窗口

 # include<stdio.h>
# define n 20
# define OK 1
# define ERROR 0
# define TRUE 1
# define FALSE 0
typedef int status;
typedef char ElemType;
typedef struct
{
    ElemType data[n];
    int top;
}SqStack;
void Init_Sq(SqStack *S)
{
    S->top=-1; 
}
status Push_Sq(SqStack *S,ElemType e)
{
    if(S->top+1==n)
        return ERROR;
    S->data[++S->top]=e;
    return OK;  
}
status Pop_Sq(SqStack *S,ElemType *e)
{
    if(S->top==-1) 
        return ERROR;
    *e=S->data[S->top--];
    return OK;  
}
status EmptyStack_Sq(SqStack S)
{
    if(S.top==-1)
        return TRUE;
    else
        return FALSE;
}
status Train_Arrange(char *train)
{ 
    char *p=train,*q=train,e;
    SqStack S;
    Init_Sq(&S);  
    while(*p)
    {//HSHSHSHSHS  
        if(*p=='H')
        {
            Push_Sq(&S,*p);
            printf("p==%p\n",*p);
        }
        else
            *(q++)=*p;
        p++; 
    }
    while(EmptyStack_Sq(S)==FALSE) 
    {
        Pop_Sq(&S,&e);
        *(q++)=e;//这儿也有问题,但是不清楚原因 
    }
    return OK;
} 
void Traverse_Sq(char *train)
{
    ElemType *p;
    p=train;
    while(*p!='\0')
        printf("%c",*p++);
    printf("\n");
}
int main()
{
    char *train="HSHSHSHSHS";
    Train_Arrange(train);
    printf("转换后的火车序列为:");
    Traverse_Sq(train);
    return 0;
}
  • 写回答

1条回答 默认 最新

  • siyelangshao 2017-10-19 06:26
    关注

    int main()
    {
    char train[100]="HSHSHSHSHS";
    Train_Arrange(train);
    printf("转换后的火车序列为:");
    Traverse_Sq(train);
    return 0;
    }
    main 函数中把char * train修改为char train[100];使用char * train=""时,指针指向字符串被当作常量而且被放置在此程序的内存静态区,不允许修改,改为数组就ok了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 spring后端vue前端
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题