📄 车厢调度源程序.c
字号:
#include<stdio.h>
#define MaxLen 100
int path[MaxLen];
typedef struct
{int path_chars[MaxLen];
int length;
}path_char;
typedef struct
{path_char paths[MaxLen];
int number;
}pathss;
pathss all_path;
void Initstack_path()
{int i;
all_path.number=0;
for(i=0;i<MaxLen;i++)
all_path.paths[i].length=0;
}
struct snode{
int data[MaxLen];
int top;
}s;
int n;
void Initstack()
{
s.top=-1;
}
void push(int q)
{
s.top++;
s.data[s.top]=q;
}
int pop()
{
int temp;
temp=s.data[s.top];
s.top--;
return temp;
}
int Emptys()
{
if(s.top==-1)
return 1;
else
return 0;
}
void print()
{int i;
for(i=s.top;i>=0;i--)
printf(" |%d|\n\n",s.data[i]);
}
void process(int pos,int path[],int curp)
{int m,i,k;
if(pos<n)
{
push(pos+1);
process(pos+1,path,curp);
pop();
}
if(!Emptys())
{
m=pop();
path[curp]=m;
curp++;
process(pos,path,curp);
push(m);
}
if(pos==n&&Emptys())
{printf("%d:",all_path.number+1);
for(i=0;i<curp;i++)
{
printf("%d",path[i]);
k=all_path.paths[all_path.number].length;
all_path.paths[all_path.number].length++;
all_path.paths[all_path.number].path_chars[k]=path[i];
}
printf("\n");
all_path.number++;
}
}
void display_only(int k,int position_out,int position_in)
{
int j;
getchar();
for(j=0;j<=position_out;j++)
printf("<----%d",all_path.paths[k].path_chars[j]);
printf("\t\t");
for(j=position_in;j<=n;j++)
printf("<----%d",j);
printf("\n");
print();
}
void choose_display()
{int k,position_in=1,position_out;
printf("input the number you want to display:");
scanf("%d",&k);
k=k-1;
Initstack();
display_only(k,-1,1);
for(position_out=0;position_out<all_path.paths[k].length;position_out++)
{
if(all_path.paths[k].path_chars[position_out]>=position_in)
{
while(all_path.paths[k].path_chars[position_out]>=position_in)
{push(position_in);
position_in++;
display_only(k,position_out-1, position_in);
}
pop();
display_only(k,position_out, position_in);
}
else
{pop();
display_only(k,position_out, position_in);
}
}
}
void message()
{printf("\t\t**************************\n ");
printf("\t\t\t""1:Initstack\n\t\t\t2:display all\n\t\t\t3:display one\n\t\t\t4:exit\n");
printf("\t\t***************************\n");
}
void input_Initstack()
{Initstack_path();
printf("input the total:\n");
scanf("%d",&n);
Initstack();
}
void display_all()
{push(1);
printf("all:\n");
process(1,path,0);
}
void main()
{int flag;
message();
scanf("%d",&flag);
while(flag!=4)
{switch(flag)
{case 1: input_Initstack();break;
case 2: display_all();break;
case 3: choose_display();break;
}
message();
scanf("%d",&flag);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -