josephus环问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 06:22:21
Typedef struct node{
int number;
struct node *next;
}Lnode,*Linklist
Linklist IntRingLList(int n){
Lnode *R,*p,*q;
int I;
R=new Lnode;
q=R;
for(i=1;i<n;i++){
p=new Lnode;
q->number=i;
q->next=p;
q=p;
}
p->number=n;
p->next=R;
R=p;
return R;
}

void Josephus(Linklist R,int n,int k,int quit[N]){
int i,j;
Lnode *p,*q;
p=R;
for(i=0;i<n;i++){
for(j=1;j<=k-1;j++)
p=p->next;
q=p->next;
p->next=q->next;
quit[i]=q->number;
delete q;
}
}

void Outing(int n,int quit[N]){
int i;
for(i=0,i<n,i++)
cout<<quit[i];
}

#include <stdio.h>
#include <malloc.h>

typedef int DataType;

struct node;
typedef struct node *PNode;
struct node {
DataType info;
PNode list;
};

typedef struct node *LinkList;
typedef LinkList *PLinkList;

int init_pclist(PLinkList lcList,int n)
//用1~n为*lclist所示的循环表初始化
{
PNode p, q;
int i;
p = (PNode)malloc(sizeof(struct node));

if (p == NULL) {
printf("Out of space\n");
return 0;
}
*lcList = p;
p ->info = 1;
p->list = p;
if (n == 1)
return 1;
else {
for (i = 2; i <= n; i++) {
q = (PNode)malloc(sizeof(struct node));
if (q == NULL) {
printf("Out of space\n");
return 0;
}
else {
q->info = i;
q->list = p->list;
p->list = q;
p = q;
}
}
}<