#include<stdio.h>
#include<stdlib.h>
int list_len = 0;
typedef struct note
{
int xuhao;
struct note *next;
}linklist_t;
linklist_t * creat_linklist()
{
linklist_t * h ;
h = (linklist_t *)malloc(sizeof(linklist_t));
h->xuhao=1;
h->next = h;
list_len ++;
return h;
}
void append_linklist(linklist_t *h,int value)
{
linklist_t *p;
p = (linklist_t *)malloc(sizeof(linklist_t));
p->xuhao = value;
p->next = h->next;
h->next = p;
list_len++;
}
void linklist_t_show(linklist_t *h)
{
linklist_t *p = h;
int i;
for(i=0;i<list_len;i++)
{
printf("%d ",p->xuhao);
p = p->next;
}
printf("\n");
}
int remove_linklist(linklist_t *h,int value)
{
linklist_t *p = h;
linklist_t *q = NULL;
int i;
for(i=0;i<list_len;i++)
{
if (p->next->xuhao == value)
{
q = p->next;
p->next =p->next->next;
free(q);
list_len--;
break;
}
p = p->next;
}
return list_len;
}
void joseph_linklist(linklist_t *h,int begin,int len)
{
linklist_t *p = h ;
int i,j ,num=1;
for(i=1;i<begin;i++)
{
p = p->next;
}
while(num>0)
{
for(j=1;j<len;j++)
{
p = p->next;
}
printf("%-3d",p->xuhao);
num = remove_linklist(h,p->xuhao);
p = p->next;
}
printf("\n");
}
int main()
{
linklist_t *H =creat_linklist();
int i,ret;
for(i=8;i>1;i--)
{
append_linklist(H,i);
}
linklist_t_show(H);
joseph_linklist(H,3,4);
return 0;
}
数据结构-约瑟夫问题
最新推荐文章于 2021-01-12 20:08:27 发布