车厢调度

题目:利用栈进行车厢调度,使软座全部位于硬座前面

分析:

       原文题目较长,但仔细分析后,这道题是一类较为简单的题。这里其实也并不需要用到栈的先入后出的特性,仅仅需要将硬座暂存,让软座先出去而已,所以将栈换成其他结构也是可以的,只要能够暂存数据。但这里题目要求用栈。
        为了模拟列车座位,我们采用两个数组来存储,数组A为入口处火车,数组B为出口处火车,A内数据依次入栈,若为硬座则压入栈,若为软座则直接进入B,最后栈内元素全部出栈,入B,至此,完成要求。

代码如下:

#include <stdio.h>
#include <stdlib.h>
struct Stack {
	char *arr;
	int len;
	int top;
};
void trainArrange(char *arrA,char *arrB,Stack *s) {//传入入口车厢,出口车厢,栈
	int i = 0, j = 0;
	char *c;//接收出栈硬座
	bool push(Stack *,char );
	char *top(Stack *);
	bool pop(Stack *);
	bool empty(Stack *);
	while (i<10) {
		if (arrA[i]=='H') {//硬座,入栈
			push(s,arrA[i]);
		}
		else {//软座,入B
			arrB[j++] = arrA[i];
		}
		i++;
	}
	while (!empty(s)) {//若栈中还有硬座,全部入B
		c = top(s);
		pop(s);
		arrB[j++] = *c;
	}

}
int main() {
	char arrA[10] = {'H','S','S','H','H','S','S','S','H','H' };//用H代表硬座,S代表软座
	char arrB[10] = { 0 };//B数组初始为空
	Stack *createStack(int);
	Stack *s;
	s = createStack(10);//创建栈
	trainArrange(arrA,arrB,s);
	for (int i = 0; i < 10;i++) {//打印重排后的车厢
		printf("%c",arrB[i]);

	}
	return 0;
}

无论你觉得自己多么的了不起,也永远有人比你更强;无论你觉得自己多么的不幸,永远有人比你更加不幸。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北街学长

你的鼓励使我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值