ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

自己实现队列、循环队列、约瑟夫环问题

2021-12-09 17:34:27  阅读:152  来源: 互联网

标签:return pt 队列 约瑟夫 int myq 循环 15 ph


 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N=1e5+5;
 4 /*int ph,pt;//head tail;
 5 int myq[20];//ph==pt队列为空; 
 6 //当进行了pop操作Ph会前移,造成空间浪费,可以采用循坏队列优化;
 7 
 8 int myq_push(int x)
 9 {
10     if(pt==15)pt=0;
11     if(pt!=ph)myq[pt++]=x;
12     else return 0;
13     return 1;
14 }
15 int myq_pop()
16 {
17     if(ph==15)ph=0;
18     if(ph!=pt)ph++;
19     else return 0;
20     return 1;
21 }
22 int main()
23 {
24     //for(int i=0;i<10;i++)myq_push(i);    
25     return 0;
26 }*/
27 /*
28 int q1[1005],q2[1005],q1h=0,q2h=0;
29 
30 int main()
31 {
32     int m,n,k;
33     cin>>m>>n;
34     cin>>k;
35     int t1=m,t2=n;
36     for(int i=0;i<m;i++)q1[i]=i;
37     for(int i=0;i<n;i++)q2[i]=i;
38     while(k)
39     {
40         printf("%d  %d\n",q1[q1h],q2[q2h]);
41         q1[t1++]=q1[q1h++];
42         q2[t2++]=q2[q2h++];
43         k--;
44      } 
45     
46     return 0;
47 }
48 */
49 //约瑟夫环 
50 const int n=10,m=4;
51 int a[n+1],j=n,k=1,p=0;
52 int main()
53 {
54     for(int i=1;i<n;i++)a[i]=i+1;//从1开始计数 
55     a[n]=1;
56     while(p<n)//要有n个人出队 
57     {
58         while(k<m)
59         {
60             j=a[j];//pre指针
61             k++; 
62         }
63          //此时k=m指向第m个节点,j指向第m个节点的前节点
64          //a[i]表示i的next节点;
65          printf("%d ",a[j]);
66          a[j]=a[a[j]]; 
67          k=1;
68          p++;
69     }
70     return 0;
71  } 

 

标签:return,pt,队列,约瑟夫,int,myq,循环,15,ph
来源: https://www.cnblogs.com/matt-su/p/15668404.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有