您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > c++队列实现数据结构火车车厢重排
#ifndefPERMUTE_H#definePERMUTE_H#includeiostreamusingnamespacestd;constintQueueSize=100;templatetypenameTstructNode{Tdata;NodeT*next;};templatetypenameTclassLinkQueue{private:NodeT*front,*rear;public:LinkQueue();virtual~LinkQueue();virtualvoidTrans();//遍历缓冲轨voidEnQueue(Tx);TDeQueue();TGetFront(){if(front!=rear)returnfront-next-data;}TGetRear(){if(front!=rear)returnrear-data;}boolEmpty(){front==NULL?return1:return0;}friendvoidTrainPermute(intarr[],LinkQueueTa[],intn,intk);};templatetypenameTLinkQueueT::LinkQueue(){NodeT*s=newNodeT;s-next=NULL;front=rear=s;}templatetypenameTLinkQueueT::~LinkQueue(){NodeT*p=front;while(p!=NULL){NodeT*q=p;p=p-next;deleteq;}}templatetypenameTvoidLinkQueueT::EnQueue(Tx){NodeT*s=newNodeT;s-next=NULL;s-data=x;rear-next=s;rear=s;}templatetypenameTTLinkQueueT::DeQueue(){if(rear==front)throw下溢;NodeT*p=front-next;intx=p-data;front-next=p-next;if(p-next==NULL)rear=front;deletep;returnx;}templatetypenameTvoidLinkQueueT::Trans(){NodeT*p=front-next;while(p){coutp-data'';p=p-next;}}voidTrainPermute(intarr[],LinkQueueinta[],intn,intk){inti=0;boolflag=1;//标记while(in&&flag){//当入轨中有车厢时flag=0;for(intm=0;mk;m++){//判断缓冲轨的队尾元素与入轨的元素if(a[m].GetRear()arr[i]){a[m].EnQueue(arr[i]);i++;flag=1;break;}if(a[m].front-next==NULL){a[m].EnQueue(arr[i]);flag=1;i++;break;}}}if(flag==0){cout车厢无法重排,算法结束endl;}else{for(intm=0;mk;m++){cout第(m+1)个缓冲轨的列车编号\t;a[m].Trans();coutendl;}coutendl火车车厢出轨顺序为\n;for(intnewout=1;newout=n;newout++){//从1开始按升序出轨for(intj=0;jk;j++){if(a[j].GetFront()==newout){couta[j].DeQueue(),;}}}}}#endif///////////////////////#includeiostream#includePermute.husingnamespacestd;intmain(){try{intn,k;cout请输入火车车厢数n:[n100]\t;cinn;coutendl;cout请输入缓冲轨数k:[k0&&kn]\t;cink;coutendl;if(k=0&&n=0&&n100)throw输入错误;int*array=newint[n];cout请输入火车车厢入轨顺序endl;for(inti=0;in;i++)cinarray[i];cout火车车厢入轨顺序为endl;for(inti=0;in;i++)coutarray[i]'';coutendlendl;LinkQueueint*buffer;buffer=newLinkQueueint[k];//动态建立k个缓冲轨队列TrainPermute(array,buffer,n,k);delete[]array;array=nullptr;}catch(char*s){coutsendl;}return0;}淮阴师范学院:凌典欢迎交流75762100@qq.com
本文标题:c++队列实现数据结构火车车厢重排
链接地址:https://www.777doc.com/doc-5774659 .html