新手入门~希望得到帮忙~修订一下错误~
#include<stdio.h>#include<stdlib.h>
#include<iostream>
using namespace std;
#define MAX 8;
typedef int SElemType;
typedef struct{
int *base;
int *top;
int stacksize;
}SqStack;
void InitStack(SqStack &S){
S.base=(SElemType*)malloc(MAX*sizeof(SElemType));
S.top=S.base;
S.stacksize=MAX;
}
void Push(SqStack &S,SElemType &e){
if(S.top-S.base>=S.stacksize){
printf("WRONG");
return 0;
}
*S.top++=e;
}//压入一个数
void Pop(SqStack &S,SElemType &e){
if(S.top==S.base)return 0;
e=*--S.top;
}//删除栈定元素,用e保留
int Scheduling(SqStack &S,int m,int pos){
int temp;
int i=0;
int path[MAX];
if (pos<m){
Push(pos+1);
Scheduling(pos+1,path[],i);
Pop();
}
if (S.top!==S.base){
temp=pop();
path[i++]=pop();
Scheduling(pos,path[],i);
Push(temp);
}
if (pos==m&&SEmpty()==1){
count++;
printf("可能情况总数为:%d种\n",&count);
for (int j=0;j<i;j++){
printf("path[j]");
}
printf("\n");
}
return 0;
}//递归模拟车厢调度,输出所有可能结果
void main(){
int m;
int pos;pos=1;
printf("------------模拟车厢调度-------------");
printf("请输入车厢最大序列号m(tip:m的最大容量为8)");
scanf("%d",&m);
struct SqStack S;
InitStack(S,m);
printf("---------------结束-------------------");
return 0;
}