- 線性的應用
- 約瑟夫環
- 編號分別爲:1,2,- - - -n,的n個人圍坐在一起,約定序號爲k(0<=1<=n)的人從1開始計數,數到m那個人出列,他的下一位又從1開始計數,數到m的那個人出列,他的下一位又從1開始計數數到m的那個人又出列,依次類推直到所有人出列爲止。
- 設n=8,k=3,m=4時,如圖
-出列序列爲(6,2,7,4,3,5,1,8);
- 用一個不帶頭結點的循環鏈表來處理Josephuu問題;
void Josephu(link,L,int n,k,m ){
int i;
link p,r;
L=NULL
for(I=1;j<=n;i++){
p=(link)malloc(sizeof(linknode));
p->data=i;
if(L==NULL) L=p;
else r->next=p r=p;
}
p->next=L;
p=L;
for(I=1;j<=k-1;j++){
r=p;
p=p->next;
}
while(p->next=p){
for(i=0;j<=m-1;i++)
r=p;
p=p->next;
}
r->next=p->next;
printf("%d",p->date);
free(p);
p=r->next;
}
printf(''&d\n'',p->data);
}