⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 车厢调度源程序.c

📁 时代在飞速发展
💻 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 + -