【数据结构】第2周 栈与队列 1:用队列对扑克牌排序
/********************** 其实就是个桶排序 **********************/ 1:用队列对扑克牌排序
# include<iostream> using namespace std; struct key{ char color; int num; }; typedef struct Card{ key data; struct Card * next; }card,* pcard; typedef struct{ pcard front; pcard rear; } queue; void init(queue &q) { q.front=q.rear=new card; q.front->next=NULL; } void enqueue(queue &q,key e) { pcard p=new card; p->data=e; p->next=NULL; q.rear->next=p; q.rear=p; } bool dequeue(queue &q,key &e) { if(q.front==q.rear) return false; pcard p=q.front->next; e=p->data; q.front->next=p->next; if(q.rear==p) q.rear=q.front; delete p; return true; } void shuchu(queue &q) { pcard p=q.front->next; while(p!=NULL) { cout<<p->data.color<<p->data.num<<" "; p=p->next; } } int main(void) { int n,i; pcard p; key c; cin>>n; queue a[10],b[5]; for(i=1; i<=9; i++) { init(a[i]); } for(i=1; i<=4; i++) { init(b[i]); } for(i=1; i<=n; i++) { cin>>c.color>>c.num; enqueue(a[c.num],c); } for(i=1; i<=9; i++) { cout<<"Queue"<<i<<":"; shuchu(a[i]); cout<<endl; } for(i=1; i<=9; i++) { while(a[i].rear!=a[i].front) { dequeue(a[i],c); switch(c.color) { case 'A':enqueue(b[1],c);break; case 'B':enqueue(b[2],c);break; case 'C':enqueue(b[3],c);break; case 'D':enqueue(b[4],c);break; } } } for(i=1; i<=4; i++) { cout<<"Queue"<<(char)('A'-1+i)<<":"; shuchu(b[i]); cout<<endl; } for(i=1; i<=4; i++) { shuchu(b[i]); } cout<<endl; return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |