7.21数据结构

约瑟夫环

//尾插插升级
int list_insert_tail2(Looplink *p,int pos)              
{                                                       
    for(int i=1;i<=pos;i++)                             
    {                                                   
        list_insert_tail(p,i);                          
    }                                                   
} 
//游戏函数                                                      
int find_and_kill(Looplink *l,int k, int m)     //l是输入的循环链表,k是从哪开始,m是数几个数        
{    
//找到开始位置                                                   
    Looplink *p=l;                                      
    while(p->data!=k)                                   
    {                                                   
        p=p->next;                                      
    }                                                   
    printf("从%d开始\n",p->data); 
    //开始游戏踢人                      
    Looplink *q=NULL;                                   
    while(p!=p->next)                                   
    {                                                   
        for(int i=1;i<m;i++)                            
        {                                               
            q=p;                                        
            p=p->next;                                  
        }                                               
        printf("删除%d\n",p->data);                     
        q->next=p->next;                                
        free(p);                                        
        p=q->next;                                      
    }      
    //循环结束留下最后一个                                             
    printf("删除%d\n",p->data);                         
    return 0;                                                                                 
}                                                       
int main(int argc, const char *argv[])
{
    Looplink *l =list_create();
    if(NULL==l)
    {
        return -1;
    }
    list_insert_tail2(l,8);
    //去头节点
    Looplink *s =kill_head(l);
    l=NULL;
    list_show2(s);
    find_and_kill(s,1,4);                        
    return 0;
}
//结果
创建成功
插入成功
插入成功
插入成功
插入成功
插入成功
插入成功
插入成功
插入成功
头节点删除成功
1	2	3	4	5	6	7	81开始
删除4
删除8
删除5
删除2
删除1
删除3
删除7
删除6

进制转换

//转换函数
int jzzh(Seqstack *s ,int p ,int m)       
{    int count=0;    //记录入栈次数                     
    while(p)                              
    {                                     
        int a=p%m;                        
        push(s,a);                        
        p=p/m;                            
        count++;                          
    }                                     
    for(int i=1;i<=count;i++)             
    {                                     
        pop(s);                           
    }                                                                               
    return 0;                                                                    
}  
//主函数                                       
int main(int argc, const char *argv[])  
{
    Seqstack *s=create();
    if(NULL==s)
    {
        return -1;
    }

    jzzh(s,75,8);  
    return 0;
}

//结果
创建成功
入栈成功
入栈成功
入栈成功
1出栈成功
1出栈成功
3出栈成功

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值