#ifndef JSCIRCULAR_H_INCLUDED
#define JSCIRCULAR_H_INCLUDED
typedef struct Node{
int data ;
struct Node* next ;
}Node ;
void Josephus(int n , int begin , int end){
int i ;
Node * head ;
Node *p ;
Node *cur ;
//构造一个有n个元素的循环表
for(i = 1 ; i <= n ; i++){
//设第一个节点为头节点
if(i == 1){
head = (Node*)malloc(sizeof(Node)) ;
if(!head){
exit(1) ;
}
//初始化头结点
head->data = i ;
head->next = head ;
p = head ;
}
else{
cur = (Node*)malloc(sizeof(Node)) ;
if(!cur){
exit(1) ;
}
//将当前新节点插入表中next指向head构成循环
cur->data = i ;
p->next = cur ;
cur->next = head ;
p = cur ;
}
}
//找到开始位置的元素
cur = head ;
for(i = 1 ; i < begin ; i++){
p = cur ;
cur = cur->next ;
}
//开始循环打印
while(n > 0){
for(i = begin ; i < end ; i++){
p = cur ;
cur = cur->next ;
}
printf("%d " , cur->data) ;
p->next = cur->next ;
cur->next = NULL ;
free(cur) ;
cur = p->next ;
n-- ;
}
}
#endif // JSCIRCULAR_H_INCLUDED
数据结构作业---Josephus环
最新推荐文章于 2022-09-30 12:00:00 发布