1:使用循环链表实现约瑟夫环
#include "loop.h"
#define N 20 //总人数
#define M 4
int main(int argc, char const *argv[])
{
looplist *h = looplistCreate();
for(int i=N;i>=1;i--)
{
looplistInsert(h,i);
}
looplistPrintHead(h);
looplist*a[100];
a[0]=looplistCutHead(h);
list_show2(a[0]);
int p[N]={0};
int i,j;
for(i=0;i<N;i++)
{
for(j=1;j<M;j++)
{
a[i]=a[i]->next;
}
p[i]=a[i]->data;
a[i+1]=looplistCutHead(a[i]);
printf("%d",p[i]);
}
for(i=0;i<N;i++)
{
printf("%d ",p[i]);
}
putchar(10);
return 0;
}
2:使用栈的特点完成进制转换
#include"stack.h"
int main(int argc, const char *argv[])
{
seqStack *s=create();
int num;
printf("请输入要转换的10进制数:");
scanf("%d",&num);
while(getchar()!='\n');
int x;
printf("请输入将该10进制数转换成进制的数:");
scanf("%d",&x);
int a=0;
while(num/x!=0)
{
push(s,num%x);
num=num/x;
a++;
}
push(s,num%x);
a++;
show(s);
int arr[100]={0};
for(int i=0;i<a;i++)
{
arr[i]=s->data[s->top];
pop(s);
printf("%d",arr[i]);
}
putchar(10);
if(NULL==s)
{
return -1;
}
return 0;
}