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

經(jīng)典棧問(wèn)題!第一次做的時(shí)候思路太混亂了,現(xiàn)在看了劉汝佳的書(shū),重新整理下。
#include <stdio.h>
#include <string.h>
/******************************************************************
* 用數(shù)組A存儲(chǔ)調(diào)整前的車(chē)廂號(hào)序列,用數(shù)組B存儲(chǔ)調(diào)整好的車(chē)廂號(hào)序列
* 用棧stack存儲(chǔ)存放在中轉(zhuǎn)站C中的車(chē)廂
* 用ix_A指向A中最前面的車(chē)廂,用ix_B指向B中最前面的車(chē)廂
*
* 如果ix_B已經(jīng)指向了\0,則說(shuō)明所有車(chē)廂已經(jīng)按指定次序出站,否則
* 如果ix_B指向的車(chē)廂等于ix_A指向的車(chē)廂,則直接把ix_A開(kāi)到B,否則
* 如果ix_B指向的車(chē)廂等于stack中的棧元素,則把棧頂車(chē)廂開(kāi)出,否則
* 如果此時(shí)A中還有車(chē)廂,則把A開(kāi)入中轉(zhuǎn)站C中,否則
* 輸出無(wú)解。
*******************************************************************/
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) /* 車(chē)已經(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("無(wú)解!\n");
return 0;
}
}
printf("完成!\n");
return 0;
}
希望本文所述對(duì)大家的C++程序設(shè)計(jì)有所幫助。
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)為無(wú)聲avi視頻添加wave音樂(lè)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言如何實(shí)現(xiàn)為無(wú)聲avi視頻添加wave音樂(lè),文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下2023-11-11
c++網(wǎng)絡(luò)編程下Linux的epoll技術(shù)和Windows下的IOCP模型
c++ 網(wǎng)絡(luò)編程LINUX-epoll/windows-IOCP下socket opoll函數(shù)用法 優(yōu)于select方法的epoll 以及windows下IOCP 解決多進(jìn)程服務(wù)端創(chuàng)建進(jìn)程資源浪費(fèi)問(wèn)題,感興趣的小伙伴一起來(lái)學(xué)習(xí)吧2021-08-08
C++17 使用 std::string_view避免字符串拷貝優(yōu)化程序性能
這篇文章主要介紹了C++17 使用 std::string_view避免字符串拷貝優(yōu)化程序性能,幫助大家提高程序運(yùn)行速度,感興趣的朋友可以了解下2020-10-10
C++實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12
C語(yǔ)言新手初階教程之三子棋實(shí)現(xiàn)
相信大家在小時(shí)候都用紙和筆與小伙伴們玩過(guò)一個(gè)經(jīng)典的游戲之井字棋,即三子棋,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言新手初階教程之三子棋實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2022-01-01
C++數(shù)據(jù)結(jié)構(gòu)模板進(jìn)階的多方面分析
今天我要給大家介紹C++中的模板更深的一些知識(shí)。有關(guān)于非類(lèi)型的模板參數(shù)和模板特化的一些知識(shí),感興趣的朋友快來(lái)看看吧2022-02-02

