1、约瑟夫环
源文件
//约瑟夫环
LoopLink list_out(LoopLink L,int e)
{
//判断逻辑
if(NULL==L || L->len<1)
{
printf("失败\n");
return NULL;
}
LoopLink q=L->next;
LoopLink p=NULL;
//直到只剩下一个普通节点
for(int j=L->len;j>0;j--);
{
for(int i=1;i<e;i++)
{
if(q->next=L)
{
q=L->next;
}else
{
q=q->next;
}
}
p=q->next;
if(p==L)
{
p=p->next;
}
q->next=p->next;
free(p);
p=NULL;
q=q->next;
L->len--;
}
return q;
}
主文件
#include"looplink.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, const char *argv[])
{
LoopLink L=list_creat();
if(NULL==L)
{
return -1;
}
list_insert_tail(L,9);
list_insert_tail(L,2);
list_insert_tail(L,3);
list_insert_tail(L,4);
list_insert_tail(L,1);
list_show(L);
LoopLink q=list_out(L,2);
printf("胜者为%d\n",q->data);
list_free(L);
return 0;
}
2、十进制转换二进制
//十进制转换二进制
int stack_convert(StackPtr S,datatype e)
{
//判断逻辑
if(NULL==S)
{
printf("转换失败\n");
return 0;
}
//将十进制转换成二进制,并入栈
while(e>1)
{
stack_push(S,e%2);
e=e/2;
}
stack_push(S,e);
//出栈
while(S->top>=0)
{
printf("%d",S->data[S->top]);
S->top--;
}
printf("\n");
return 1;
}