思维导图
1、使用单向循环链表完成约瑟夫环问题
//判断逻辑
if(NULL == L){
printf("链表有问题\n");
return;
}
if(num<1){
return;
}
//插入count个数据
for(int i=0;i<count;i++){
printf("请输入第%d位成员:\n",i+1);
int e;
scanf("%d",&e);
list_insert_tail(L, e);
}
//输出
Looplink q = L;
while(!list_empty(L)){
for(int j=0;j<num-1;j++){ //q移动到要出列的前一位
if(q->next==L){ //当碰到L时,将q向后移一位
q=q->next;
}
q=q->next;
}
printf("%d",q->next->data);//出列
q->next = q->next->next;//将q连接到出列的下一位
L->len--;
}
printf("\n");
}
代码现象
2、使用栈的操作完成进制转换问题,例如输入一个十进制数据,程序输出该数据的二进制数
//实现十进制转二进制
void stack_bin(StackPtr S, int num){
//转换逻辑
while(num/2!=0){ //num<2
stack_push(S, num%2); //求余入栈
num = num/2;
}
stack_push(S, num); //将最高位入栈
stack_show(S); //遍历
}
代码现象