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

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

题目:借助栈 把字符数组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 nginx中的CORS策略应该如何配置
  • ¥30 信号与系统实验:采样定理分析
  • ¥100 我想找人帮我写Python 的股票分析代码,有意请加mathtao
  • ¥20 Vite 打包的 Vue3 组件库,图标无法显示
  • ¥15 php 同步电商平台多个店铺增量订单和订单状态
  • ¥15 关于logstash转发日志时发生的部分内容丢失问题
  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题