#include "myinclude.h"
typedef struct NODE* PNode;
typedef struct NODE{
int num;
PNode next;
};
PNode createNode(int);
int makeChoice(int,int,PNode);
void main(){
PNode p1,p2;
int i = 0;
p1 = createNode(5);
p2 = p1;
for(;i < 5;i++){
printf("%d ",p2->num);
p2 = p2->next;
}
printf("\nthe result is %d ",makeChoice(5,2,p1));
}
/*创建循环链表*/
PNode createNode(int n){
int i = 0;
PNode head,p,link;
head = (PNode)malloc(sizeof(struct NODE));
head->num = 1;
head->next = NULL;
link = head;
for(i = 2;i <= n;i++){
p = malloc(sizeof(struct NODE));
if(p == NULL)
return;
p->num = i;
link->next = p;
link = p;
p->next = NULL;
}
p->next = head;
return head;
}
/*处理*/
int makeChoice(int n,int m ,PNode p){
int i,j;
PNode p1;
/*考虑到m为0的情况*/
if(0 == m){
for(i = 0;i < n-1;i++){
p = p->next;
}
}
else{
for(i = 0;i < n;i++){
for(j = 0;j < m; j++){
p1 = p;
p = p->next;
}
p1->next = p->next;
free(p);
p = p1->next;
}
}
return p->num;
}
josephus链表解决
最新推荐文章于 2022-10-09 15:00:50 发布