【舞伴问题 -- 链队列实现】
来源:互联网 发布:哨子办公软件 编辑:程序博客网 时间:2024/05/14 12:54
数据结构作业记录
如有BUG ,欢迎指出!!
#include<bits/stdc++.h>using namespace std;#define status int #define OK 1 #define ERROR 0 typedef struct QNode{ int sex; char name[100]; struct QNode *next;}QNode;typedef struct LinkQueue{ QNode *rear=new QNode; QNode *front=new QNode; status init(){ // 初始化 front->next=rear; rear->next=front; return OK; } bool IsEmpty(){ // 队列是否为空 return front->next==rear; } bool Pop(QNode& e){// 弹出队顶元素 QNode *p; if(IsEmpty()) return ERROR ; e.sex=front->next->sex; strcpy(e.name,front->next->name); p=front->next; front->next=p->next; delete p; return OK; } bool Push(QNode temp){ // 输入队列 QNode *p; QNode *t=new QNode; t->sex=temp.sex; strcpy(t->name,temp.name); p=rear->next; p->next=t; t->next=rear; rear->next=t; return OK; } bool Top(QNode &e){ // 得到队列顶元素 if(IsEmpty()) return ERROR; e.sex=front->next->sex; strcpy(e.name,front->next->name); return OK; } }LinkQueue;LinkQueue Queue,MQueue,FQueue; // 分别为 所有dancer ,女dancer,男dancer bool DancerAssign(){ Queue.init();MQueue.init();FQueue.init(); // 初始化 printf("Please input the nummber of dancer:"); int n;scanf("%d",&n); char sex[10];QNode p,e; int id=1; for(int i=1;i<=n;i++){ printf("Please input the %d dancer information :\n",id++); printf("name :");scanf("%s",p.name); printf("sex :"); scanf("%s",sex); // 要输入中文 if(strcmp(sex,"男")==0) p.sex=1; else p.sex=0; Queue.Push(p); } while(!Queue.IsEmpty()){ Queue.Pop(e); if(e.sex==1) FQueue.Push(e); else MQueue.Push(e); } id=1; while(!MQueue.IsEmpty()&&!FQueue.IsEmpty()){ printf("The %d dancing partners are :",id++); MQueue.Pop(e) ; printf("%s and ",e.name); FQueue.Pop(e) ; printf("%s .\n",e.name) ; } if(!MQueue.IsEmpty()) { MQueue.Top(e); printf("The first woman to get a partner is : %s .\n",e.name); }else if(!FQueue.IsEmpty()){ FQueue.Top(e); printf("The first man to get a partner is : %s .\n",e.name); }} int main(){ puts("----------Welcome to use----------"); while(1){ char op[10]; puts("\n A :the party begin !!"); puts(" Q :End ."); printf("Please input command: "); scanf("%s",op); if(op[0]=='A') DancerAssign(); else if(op[0]=='Q') break; else puts("Your command is wrong ,please input again !!\n"); } puts("Welcome to use again .\nBye ~ "); return 0 ; }
阅读全文
0 0
- 【舞伴问题 -- 链队列实现】
- 数据结构--队列实现舞伴配对问题
- 队列实现舞伴配对
- 数据结构_队列-循环队列实现模拟舞伴配对问题
- 数据结构_队列-循环队列实现模拟舞伴配对问题
- 用顺序队列实现的舞会舞伴选择问题
- C语言实现舞伴问题
- 简单的舞伴问题实现
- 舞伴配对问题---队列的应用
- 舞伴配对问题---队列的应用
- 学习队列的作用 队列的应用--舞伴问题
- 舞伴问题
- 舞伴问题
- 舞伴问题
- 舞伴问题
- 数据结构 舞伴问题
- ACM之舞伴问题
- 舞伴配对问题
- 微信开发H5十二人牛牛源码下载搭建
- JAVA String StringBuffer StringBuilder 区别
- Linux 使用swap分区
- 如何在git上clone别人的项目、提交代码以及更新最新代码
- 重定向 重写
- 【舞伴问题 -- 链队列实现】
- 如何绕过面试题中的小坑
- Jedis常见异常汇总
- CSS中:visited链接伪类的怪癖
- Mysql 字段拼接
- TP5 小知识
- 如何用 css 修出好看的照片
- 牛客网---2016---搜狐发奖金
- DrawerLayout 侧滑菜单