day6数据结构

 

用栈进行进制转换 

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);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值