栈的应用:火车调度
问题概述
输入第一行是一个整数N,表示车厢的数量;第二行是一个由Y于R组成的字符串,表示车厢的排列,其中Y表示硬座,R表示软座。我们的任务,是借助一个栈,使得车厢的顺序变为软座在硬座前。
输出是一个由I与O组成的字符串,代表栈的操作,I表示入栈,O表示出栈
思路分析
逐一读入火车字符串,遇到硬座,就把它入栈缓存,遇到软座,就先入栈,然后立刻出栈(相当于没有缓存),最后,当所有车厢被读入完毕,此时所有硬座都在栈内缓存,依次出栈直到栈空为止。
代🐎与注释
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
struct ListNode {
char data;
ListNode* Next;
ListNode* Last;
};
struct List {
ListNode* header;
ListNode* trailer;
int _size;
};
void CreateList(List* l)//build the list
{
l->_size = 0;
l->header = (ListNode*)malloc(sizeof(ListNode));
l->trailer = (ListNode*)malloc(sizeof(ListNode));
l->header->Next = l