⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 Ch03 Ex16 [Ch03 Ex16] 假设如题3.1所述火车调度站的入口处有n节硬席或软席车厢(分别以H和S表示) 等待调度
💻 TXT
字号:
Ch03 Ex16
 [Ch03  Ex16] 假设如题3.1所述火车调度站的入口处有n节硬席或软席车厢(分别以H和S表示)
等待调度,试编写算法,输出对这n节车厢进行调度的操作(即入栈或出栈操作)序列,以使用
所有的软席车厢都被调整到硬席车厢之前。
    提示:
    1.本题目in_str代表顺序表,期中存放着入口处有n节硬席或软席车厢(分别以H和S表示),
而in_str.length代表车厢总数,其值等于n 。
    2.算法思路是:
    借用一个字符串rs,假设I代表进站操作,O代表出站操作,rs串最终结果是关于I和O组成的串。
    遇到软席车厢(S),不得不先进站,再出站。rs串中应该有“IO”。
    遇到硬席车厢(H),只进站不出站。rs串中应该有“I” 。
    3. 举例
       车厢序列:    H S HHSS
       那么rs串应该:IIOIIIOIOOOO
    因此,本函数返回调者函数一个rs字符串。
void switchyard( char* rs, SqList in_str)
{ // 顺序表in_str中存有表示等待调度的车厢的字符序列。
  // 以字符串 rs 返回表示调度操作的字符序列。 
  int i,k;
   strcpy(rs,"\0");                     //在rs串中,I代表进站,O代表出站
   k = 0;
   for( i=0; i<in_str.length; i++ )
     if(in_str.elem[i]=='S')
     {	strcat( rs ,"I");               //如果是软席车厢S,进站I,再出站O
	strcat( rs ,"O");
     }
      else
          { strcat(rs ,"I");            //如果是硬席车厢H,只进站I
            k++;                        //k记下站中硬席车厢的个数 
          }
   while( k>0 )  { strcat( rs, "O");    //k>0,则站中硬席车厢出站O 
                     k--;
                  }

}//switchyard
  

      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -