约瑟夫环-单循环链表
具体代码
#include<stdio.h>
#include <stdlib.h>
#include<malloc.h>
#define MAXSIZE 100
typedef struct Node{
int date;
struct Node* next;
}Node;
typedef struct Node* LinkList;
void List_Init(LinkList *L,int n){
LinkList head,p;
*L=(LinkList)malloc(sizeof(Node));
head=*L;
for(int i=0;i<n;i++){
p=(LinkList)malloc(sizeof(Node));
p->date=i+1;
head->next=p;
head=p;
}
p->next=(*L)->next;
}
void jsf(LinkList *L){
LinkList p;
p=(*L)->next;
printf("出环顺序:");
do{
p=p->next;
printf("%d ",p->next->date);
p->next=p->next->next;
p=p->next;
}while(p->next->next!=p);
printf("\n剩余:");
printf("%d %d",p->date,p->next->date);
}
void List_Print(LinkList *L){
LinkList p;
p=(*L)->next;
do{
printf("%d ",p->date);
p=p->next;
}while(p!=(*L)->next);
printf("\n");
}
int main(){
LinkList L;
List_Init(&L,23);
jsf(&L);
}