国产化驱动经济自主性与科技创新的未来之路
647
2022-08-24
约瑟夫环
约瑟夫环
描述 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人。
全部出列。请利用以下链队列实现该算法。
#define OK 1#define ERROR 0#define OVERFLOW -2typedef int QElemType;typedef int Status;//- - - - - 链队列定义- - - - - typedef struct QNode { QElemType data; struct QNode *next;} QNode, *QueuePtr;typedef struct { QueuePtr front; QueuePtr rear; } LinkQueue;//初始化Status InitQueue(LinkQueue &Q) { Q.front = Q.rear = new QNode; Q.front->next = NULL; return OK;}//入队Status EnQueue(LinkQueue &Q, QElemType e) { QueuePtr p; p = new QNode; p->data = e; p->next = NULL; Q.rear->next = p; Q.rear = p; return OK;}//出队Status DeQueue(LinkQueue &Q, QElemType &e) { QueuePtr p; if (Q.front == Q.rear) return ERROR; p = Q.front->next; e = p->data; Q.front->next = p->next; if (Q.rear == p) Q.rear = Q.front; delete p; return
输入 n,k,m
输出 出列次序。
样例输入
10 3 5
样例输出 7 2 8 4 1 10 3 6 9 5
直接上代码:
/***链队的基本操作***/#include
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~