欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++基于棧實(shí)現(xiàn)鐵軌問題

 更新時(shí)間:2015年04月20日 11:55:25   作者:司青  
這篇文章主要介紹了C++基于棧實(shí)現(xiàn)鐵軌問題,實(shí)例分析了C++使用棧實(shí)現(xiàn)鐵軌問題的思路與解決方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了C++基于棧實(shí)現(xiàn)鐵軌問題。分享給大家供大家參考。具體分析如下:

示例圖如下所示:

經(jīng)典棧問題!第一次做的時(shí)候思路太混亂了,現(xiàn)在看了劉汝佳的書,重新整理下。

#include <stdio.h>
#include <string.h>
/******************************************************************
* 用數(shù)組A存儲(chǔ)調(diào)整前的車廂號(hào)序列,用數(shù)組B存儲(chǔ)調(diào)整好的車廂號(hào)序列
* 用棧stack存儲(chǔ)存放在中轉(zhuǎn)站C中的車廂
*  用ix_A指向A中最前面的車廂,用ix_B指向B中最前面的車廂
*
*  如果ix_B已經(jīng)指向了\0,則說明所有車廂已經(jīng)按指定次序出站,否則
*  如果ix_B指向的車廂等于ix_A指向的車廂,則直接把ix_A開到B,否則
*  如果ix_B指向的車廂等于stack中的棧元素,則把棧頂車廂開出,否則
*  如果此時(shí)A中還有車廂,則把A開入中轉(zhuǎn)站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) /* 車已經(jīng)全出去了,操作成功 */
    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;
}

希望本文所述對(duì)大家的C++程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論