栈的运用(1)
问题描述:
火车调度站的入口处有n节硬席或软席车厢(以H和S表示)等待调度,试编写算法,输出对这n节车厢进行调度的操作(即入栈或出栈操作)序列,使得所有软席车厢都被调整到硬席车厢之前。
问题分析:
此题主要解决的问题是,不管是入栈还是出栈,软席车厢要在硬席车厢之前
一开始能想到的效果就是一头一尾都是软席,这样入栈和出栈都使得软席在硬席之前咯
没看清题目啊,题目是说要把所有软席车厢都被调整到硬席车厢之前呢?亲啊。
Int main()
{
Stack s;
Char buffer[80];
InitStack(s);
Int i=0,j=0;
Printf(“请输入序列\n”);
While(i<s.stacksize){
Scanf(“%c”,&buffer[i]);
I++;
}//这段代码时有问题的
C语言知道该怎么写了,
得承认写得少,但是来得及的,你看数据结构可以给你补很多知识。
Scanf(“%s”,buffer);//自己试着多写写就是熟悉了。
用C++是直接这样写的
Cin>>buffer;
While(buffer[i]){
If(buffer[i]==’S’){
Buffer[j]=buffer[i];
j++;
}
Else
Push(s,buffer[i]);
I++;
}
While(buffer[j])//说实话,我对数组的使用还不是很清楚,声明了一个字符数组,用得有些别扭,要多编程。
{
Pop(s,buffer[j]);
J++;
}
Printf(“%s”,buffer);//各种语言的使用并不可怕,关键是编程的思想呢?可能这语句有问题,在C++中是这样表示的,cout<<buffer<<endl;
Return 0;
}
作者:wj704
出处:http://www.cnblogs.com/wj204/