#ifndef PERMUTE_H
#define PERMUTE_H
#include
using namespace std;
const int QueueSize = 100;
template
struct Node{
T data;
Node
};
template
class LinkQueue{
private:
Node
public:
LinkQueue();
virtual ~LinkQueue();
virtual void Trans(); //遍历缓冲轨
void EnQueue(T x);
T DeQueue();
T GetFront(){
if(front!=rear)
return front->next->data;
}
T GetRear(){
if(front!=rear)
return rear->data;
}
bool Empty(){
front==NULL?return 1:return 0;
}
friend void TrainPermute(int arr[],LinkQueue
};
template
LinkQueue
Node
s->next=NULL;
front=rear=s;
}
template
LinkQueue
Node
while(p!=NULL){
Node
p=p->next;
delete q;
}
}
template
void LinkQueue
Node
s->next=NULL;
s->data=x;
rear->next=s;
rear=s;
}
template
T LinkQueue
if(rear==front)
throw"下溢";
Node
int x=p->data;
front->next=p->next;
if(p->next==NULL)
rear=front;
delete p;
return x;
}
template
void LinkQueue
Node
while(p){
cout<
p=p->next;
}
}
void TrainPermute(int arr[],LinkQueue
int i=0;
bool flag=1;//标记
while(i
for(int m=0;m
i++;flag=1;break;
}
if(a[m].front->next==NULL){
a[m].EnQueue(arr[i]);
flag=1;i++;break;
}
}
}
if(flag==0){
cout<<"车厢无法重排,算法结束"<
else
{
for(int m=0;m
a[m].Trans();
cout<
cout<
for(int j=0;j
{cout<}
}
}
}
#endif
///////////////////////
#include
#include"Permute.h"
using namespace std;
int main(){
try{
int n,k;
cout<<"请输入火车车厢数n:[n<100]\t";
cin>>n;cout<
if(k<=0&&n<=0&&n>100)
throw"输入错误";
int *array=new int[n];
cout<<"请输入火车车厢入轨顺序"<
cout<<"火车车厢入轨顺序为"<
buffer=new LinkQueue
TrainPermute(array,buffer,n,k);
delete []array;
array=nullptr;
}
catch(char *s){
cout<}
return 0;
}
淮阴师范学院:凌典
欢迎交流75762100@https://www.sodocs.net/doc/ca16690386.html,