目录
一、题目要求
问题描述:
假设停在铁路调度站(如教科书中图3.1(b)所示)入口处的车厢系列的编号依次为1,2,3,…n。设计一个程序,求出所有可能由此输出的长度为n 的车厢系列。
基本要求:
⑴设计一个程序,求出由一个编号依次为1,2,、、、,n的车厢序列可能产生的所有出栈系列。
⑵利用双向栈存储结构实现调度站和输出序列这两个栈的空间共享。
⑶对于每个输出序列演示出所有操作序列的变化过程 。
二、运行结果
三、代码实现
1.头文件(che.h)
typedef struct
{
int *base;//基指针
int *top;//尾指针
int stacksize;//栈的容量
int length;//栈长
}stack1;
void initlist(stack1 *s);
void push(stack1 *s,int i);
void pop(stack1 *s);
void operation(stack1 *s);
2.初始化模块(initlist.c)
#include<stdio.h>
#include<stdlib.h>
#include "che.h"
void initlist(stack1 *s)
{
s->base=s->top=(int *)malloc(STACK_INI_SIZE*sizeof(int));//开辟空间
if(!s->base)
{
printf("Failure to open up space!");
exit(1);
}
s->length=0;
s->stacksize=STACK_INI_SIZE;
}
3.入栈模块(push.c)
#include<stdio.h>
#include<stdli