程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++基於棧完成鐵軌成績

C++基於棧完成鐵軌成績

編輯:關於C++

C++基於棧完成鐵軌成績。本站提示廣大學習愛好者:(C++基於棧完成鐵軌成績)文章只能為提供參考,不一定能成為您想要的結果。以下是C++基於棧完成鐵軌成績正文


本文實例講述了C++基於棧完成鐵軌成績。分享給年夜家供年夜家參考。詳細剖析以下:

示例圖以下所示:

經典棧成績!第一次做的時刻思緒太凌亂了,如今看了劉汝佳的書,從新整頓下。

#include <stdio.h>
#include <string.h>
/******************************************************************
* 用數組A存儲調劑前的車箱號序列,用數組B存儲調劑好的車箱號序列
* 用棧stack存貯存放在直達站C中的車箱
*  用ix_A指向A中最後面的車箱,用ix_B指向B中最後面的車箱
*
*  假如ix_B曾經指向了\0,則解釋一切車箱曾經按指定順序出站,不然
*  假如ix_B指向的車箱等於ix_A指向的車箱,則直接把ix_A開到B,不然
*  假如ix_B指向的車箱等於stack中的棧元素,則把棧頂車箱開出,不然
*  假如此時A中還有車箱,則把A開入直達站C中,不然
*  輸入無解。
*******************************************************************/
char stack[1010];
char A[1010];
char B[1010];
int main(int argc, char *argv[])
{
 scanf("%s%s",A,B);
 int len_a = strlen(A);
 int len_b = strlen(B);
 /* 初始化棧 */
 int top = -1;
 int tot = 0;
 int ix_a = 0;
 int ix_b = 0;
 while(1)
 {
  if(A[ix_a] == B[ix_b])
  {
   printf("in\n");
   printf("out\n");
   ++ix_b;
   ++ix_a;
   if(ix_b == len_b) /* 車曾經全出去了,操作勝利 */
    break;
  }
  else if(tot != 0 /* 先檢討棧能否為空 */ && B[ix_b] == stack[top])
  {
   printf("out\n");
   --tot;
   --top;
   ++ix_b;
   if(ix_b == len_b)
    break;
  }
  else if(ix_a != len_a)
  {
   printf("in\n");
   ++tot;
   ++top;
   stack[top] = A[ix_a];
   ++ix_a;
   if(ix_b == len_b)
    break;
  }
  else
  {
   printf("無解!\n");
   return 0;
  }
 }
 printf("完成!\n");
 return 0;
}

願望本文所述對年夜家的C++法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved