📄 ll_josep.cpp
字号:
#include "d:\cpp\head.h"
typedef struct LNode{
int pass;
int no;
struct LNode *next;
}LNode,*LinkList;
Status CreatList(LinkList &L,int m){
LNode *p;
if(m<1)return ERROR;
L=(LNode*)malloc(sizeof(LNode));
if(!L)return OVERFLOW;
L->next=NULL;
for(;m>=1;m--){
p=(LNode*)malloc(sizeof(LNode));
if(!p)return OVERFLOW;
printf("NO%dpass:",m);
scanf("%d",&p->pass);
p->no=m;
p->next=L->next;
L->next=p;
}
return OK;
}
void visit(int m,int n){
printf("NO:%5d PASS:%5d\n",m,n);
}
void ListTraverse(LinkList L,void (*visit)(int m,int n)){
LinkList p;
p=L->next;
while(p){
visit(p->no,p->pass);
p=p->next;
}
}
Status Joseph(LinkList L,int m){
//L have a head node
LinkList p,q;
int i;
if(!(L->next)||m<1)return ERROR;
p=L;
i=0;
while(L->next!=NULL){
while(i<m-1){
p=p->next;
i++;
if(i<m-1&&p->next==NULL)p=L;
}
if(p->next==NULL)p=L;
q=p->next;
printf("*%d",q->no);
m=q->pass;
i=0;
p->next=q->next;
}//while
printf("\n");
return OK;
}
void main(){
LinkList L;
CreatList(L,5);
ListTraverse(L,*visit);
Joseph(L,4);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -