#include<stdio.h>
#include<stdlib.h>
#define N 13
struct link_list{
int i;
struct link_list *next;
} ;
struct link_list * build(){
int j;
struct link_list * head=((struct link_list *)malloc(sizeof(struct link_list )));
struct link_list *p=head;
struct link_list *q=head;
head->i=0;
for(j=1;j<N;j ++){
p=((struct link_list *)malloc(sizeof(struct link_list )));
p->i=j;
q->next=p;
q=p;
}
q->next=NULL;
return head;
}
int main(){
int i=0,k=N;
struct link_list *head,*p,*pre,*q;
head=build();//建立链表;
p=head;
pre=head;
while(k!=1){
i++;
if(i==3){
pre->next=p->next;
q=p;
p=pre->next;
printf("%12d",q->i);
if(q==head)
head=head->next;
free(q);
k--;
i=0;
}
else{
pre=p;
p=p->next;
}
if(p==NULL){
p=head;
}
}
printf("%12d",(head->i)+1);
}
约瑟夫环链表解决方式
最新推荐文章于 2024-09-09 09:39:48 发布