用栈进行进制转换
int main(int argc, const char *argv[])
{
StackPtr S=stack_create();
if(NULL==S)
{
return -1;
}
int num;
scanf("%d",&num); //输入要进制转换的数
while(num>0)
{
stack_push(S,num%2); //将num模除的余数入栈
num=num/2;
}
int i=stack_size(S); //求栈的大小
while(i>0)
{
stack_pop(S); //出栈
i--;
}
putchar(10);
return 0;
}
约瑟夫环
void ysf(LoopLink L,int m,int n) //m为数据个数,n为报的数值
{
LoopLink p = L;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n - 1; j++)
{
p = p->next;
if (p == L)
{
p = p->next;
}
}
LoopLink q = p->next;
if (q == L)
{
q = L->next;
}
printf("%d\t", q->data); //将报到的数输出
p->next = q->next;
free(q); //删除报到的数
q = NULL;
L->len--; //长度变化
}
putchar(10);
}
int main(int argc, const char *argv[])
{
LoopLink L=list_creat();
if(NULL==L)
{
return -1;
}
int m,n;
printf("输入环元素的个数\n");
scanf("%d",&m); //环里数据元素的个数
for(int i=0;i<m;i++)
{
int num;
scanf("%d",&num);
list_insert_tail(L,num);
}
printf("输入报的数值\n");
scanf("%d",&n);
ysf(L,m,n);