数据结构(二)——队列

本文介绍了队列的基本定义,重点讲述了队列的入队和出队操作,并通过五个经典例题深入剖析了队列的应用,包括舞伴配对问题、集合的前N个元素生成、约瑟夫问题、细胞个数问题以及最少步数问题的解决方案。
摘要由CSDN通过智能技术生成

一、队列定义:队列是限定在一端进行插入,另一端进行删除特殊线性表。


二、队列基本操作:

  1. 入队
  2. 出队

三、队列例题:
1.例1:舞伴配对问题:
分析:这一题是一道经典的取模运算,每一次将编号往前加一位,到达n就取模。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){
    int i,j,k,n,m;
    scanf("%d%d%d",&m,&n,&k);
    int a=1,b=1;
    while(k>0){
        printf("%d %d\n",a,b);
        a%=m;b%=n;a++;b++;
        k--; 
    }
    return 0;
}

2.集合的前N个元素:编一个程序,按递增次序生成集合M的最小的N个数,M的定义如下:
(1)数1属于M;
(2)如果X属于M,则Y=2*x+1和Z=3*x+1也属于M;
(3)此外再没有别的数属于M。
分析:这一题可以用两个数组来存放有Y和Z产生而出的元素,再通过对比选出小的输出:

#include<stdio.h>
int a[100001],b[100001];
int main(){
    int i,j,k,n,m;
    int x=1;
    int ra=0,rb=0,la=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值