C语言数据结构队列实现舞伴匹配(数据结构第二次实验)
2017-11-12 13:45
756 查看
C语言实验作业
题目如下:
课程名称:数据结构
实验目的:
1.掌握队列的定义及实现;
2.掌握利用队列的基本操作。
实验要求:
1、 使用链式结构完成队列的各种基本操作;
2、 补充完善教材81页的舞伴问题。
实验项目名称:队列的基本操作应用
实验过程:
1、 先建立一个舞者队列,依次往队列中添加人员信息(8个人,5男3女);
2、 分别创建男女队列;
3、 从舞者队列中依次将队首元素出队并判断其性别并添加至男队(5人)或女队(3人);
4、 分别从男队和女队出队队首元素并配对输出;(男队女队分别3人)
5、 将未完成的一队队首元素输出(男队的队首成员名称)。
实验报告中给出算法3.23的代码
实验结果:
输入:8人信息(A,B,C,D,E,F,G,H)
输出:The dancepartners:
A---B
C---D
E---F
G is waiting for a partner.
实验分析:
1.队列的操作特点;
2.列举调试运行过程中出现的错误并分析原因。
要求:
(1) 程序要添加适当的注释,程序的书写要采用缩进格式。
(2) 程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应。
(3) 程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。
(4) 上传源程序到课堂派。顺序表的源程序保存为dancepartner.cpp。
题目如下:
课程名称:数据结构
实验目的:
1.掌握队列的定义及实现;
2.掌握利用队列的基本操作。
实验要求:
1、 使用链式结构完成队列的各种基本操作;
2、 补充完善教材81页的舞伴问题。
实验项目名称:队列的基本操作应用
实验过程:
1、 先建立一个舞者队列,依次往队列中添加人员信息(8个人,5男3女);
2、 分别创建男女队列;
3、 从舞者队列中依次将队首元素出队并判断其性别并添加至男队(5人)或女队(3人);
4、 分别从男队和女队出队队首元素并配对输出;(男队女队分别3人)
5、 将未完成的一队队首元素输出(男队的队首成员名称)。
实验报告中给出算法3.23的代码
实验结果:
输入:8人信息(A,B,C,D,E,F,G,H)
输出:The dancepartners:
A---B
C---D
E---F
G is waiting for a partner.
实验分析:
1.队列的操作特点;
2.列举调试运行过程中出现的错误并分析原因。
要求:
(1) 程序要添加适当的注释,程序的书写要采用缩进格式。
(2) 程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应。
(3) 程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。
(4) 上传源程序到课堂派。顺序表的源程序保存为dancepartner.cpp。
#include<stdio.h> #define OK 1 #define ERROR 0 typedef char ElemType; typedef int Status; //定义一个舞伴链表 typedef struct QNode { ElemType name; ElemType sex; struct QNode *next; }QNode,*QueuePtr; //定义一个舞伴队列 typedef struct LQueue { QueuePtr rear; QueuePtr front; }LQueue,*LQueueNode; //定义男舞伴队列以及链表 typedef struct Man_QNode { ElemType data; struct Man_QNode *next; }Man_QNode,*Man_Ptr; typedef struct Man_LQueue { Man_Ptr rear; Man_Ptr front; }Man_LQueue,*Man_LQueueNode; //定义女舞伴队列以及链表 typedef struct Woman_QNode { ElemType data; struct Woman_QNode *next; }Woman_QNode,*Woman_Ptr; typedef struct Woman_LQueue { Woman_Ptr rear; Woman_Ptr front; }Woman_LQueue,*Woman_LQueueNode; //初始化舞伴队列 Status Init_Queue(LQueueNode &Q) { Q->front=Q->rear=new QNode; Q->front=NULL; return OK; } //初始化两个男女舞伴队列 Status Man_Init(Man_LQueueNode &Q1) { Q1->front=Q1->rear=new Man_QNode; Q1->front=NULL; return OK; } Status Woman_Init(Woman_LQueueNode &Q2) { Q2->front=Q2->rear=new Woman_QNode; Q2->front=NULL; return OK; } //进入舞伴队列的操作 Status InQueue(LQueueNode &Q,ElemType name,ElemType sex) { QueuePtr p; p=new QNode; p->name=name; p->sex=sex; if(Q->front==NULL) { Q->front=p; } p->next=NULL; Q->rear->next=p; Q->rear=p; return OK; } //进入男女舞伴队列的操作 Status Man_InQueue(Man_LQueueNode &Q1,ElemType e) { Man_Ptr p; p=new Man_QNode; p->data=e; p->next=NULL; if(Q1->front==NULL) { Q1->front=p; } Q1->rear->next=p; Q1->rear=p; return OK; } Status Woman_InQueue(Woman_LQueueNode &Q2,ElemType e) { Woman_Ptr p; p=new Woman_QNode; p->data=e; p->next=NULL; if(Q2->front==NULL) { Q2->front=p; } Q2->rear->next=p; Q2->rear=p; return OK; } //出舞伴队列的操作 ElemType OutQueue_sex(LQueueNode &Q) { ElemType e; e=Q->front->sex; return e; } ElemType OutQueue_name(LQueueNode &Q) { ElemType e; e=Q->front->name; Q->front=Q->front->next; return e; } //出男女舞伴队列的操作 ElemType Man_OutQueue(Man_LQueueNode &Q1) { ElemType e; e=Q1->front->data; Q1->front=Q1->front->next; return e; } ElemType Woman_OutQueue(Woman_LQueueNode &Q2) { ElemType e; e=Q2->front->data; Q2->front=Q2->front->next; return e; } int main() { LQueueNode Q; Man_LQueueNode Q1; Woman_LQueueNode Q2; Q=new LQueue; Q1=new Man_LQueue; Q2=new Woman_LQueue; Init_Queue(Q); Man_Init(Q1); Woman_Init(Q2); int num=0; int num1=0; int num2=0; char name,sex; char t,person; char boy,girl; //将所有舞伴置入舞伴队列 printf("----------提示:输入时请输入单个字符字母表示姓名,然后空格后输入M表示男,W表示女----------\n"); while(1) { printf("请输入舞伴的名字,性别:(输入Q Q时结束)"); scanf(" %c %c",&name,&sex); if(name=='Q') { break; } InQueue(Q,name,sex); num++; } //判断舞伴性别并分别将其置入男女舞伴队列 while(num!=0) { t=OutQueue_sex(Q); if(t=='M') { person=OutQueue_name(Q); num--; Man_InQueue(Q1,person); num1++; } if(t=='W') { person=OutQueue_name(Q); num--; Woman_InQueue(Q2,person); num2++; } } //开始匹配 while(1) { if(num1==0) { break; } if(num2==0) { break; } boy=Man_OutQueue(Q1); girl=Woman_OutQueue(Q2); num1--;num2--; printf("%c-----------%c\n",boy,girl); } return 0; }
相关文章推荐
- C语言 队列的链式结构的实现与表示 数据结构 队列的实现与表示
- 数据结构 c语言实现链式循环队列(输入数字入队 输入字母出队)
- 数据结构:循环队列(C语言实现)
- 数据结构:循环队列(C语言实现)
- 数据结构|链队列的实现(实验3.4)
- 数据结构:循环队列(C语言实现)
- 数据结构C语言实现之链式队列的6种算法代码
- 数据结构C语言实现系列——队列
- 数据结构:循环队列(C语言实现)
- 数据结构:循环队列(C语言实现)
- 数据结构:循环队列(C语言实现)
- 数据结构实现链式队列(C语言)
- 数据结构--队列实现舞伴配对问题
- 数据结构:循环队列(C语言实现)
- 数据结构:循环队列(C语言实现)
- 循环队列–C语言实现–数据结构
- 数据结构---队列C语言实现
- 数据结构C语言实现系列——队列
- 数据结构之带优先级的队列(C语言实现)
- 数据结构_队列-循环队列实现模拟舞伴配对问题