zoukankan      html  css  js  c++  java
  • 循环链表——跳海问题

    题目:因为轮船要沉没,需要船员跳海保护轮船,船员围坐一圈,首先指出从第几号开始,顺序数七个人,被数到的人跳海,循环直到只剩一人。

    思路:用循环链表。

    结构体:

    struct linklist{
        int data;
        struct linklist *next;
    };    
    typedef struct linklist * linknode;

    创建循环链表:

    linknode sub,temp;

    linknode creat(int n){
        linknode L=new linklist;
        linknode last=L;
        L->next=NULL;
        for(int i=0;i<n;i++){
            linknode p=new linklist;
            p->data=i+1;
            last->next=p;
            last=p;
        }
        last->next=L->next;
        return L->next;
    }

    注意这道题目不能含有头指针,从第一个有效节点开始,其数据域为1!

    选出跳海的人:

    int left(linknode &S,int r,int n){
        linknode temp=S,q;
        for(int i=0;i<r-1;i++)
        temp=temp->next;  //从第r个开始
        while(n>1){
            for(int j=0;j<5;j++)       //删除从他之后第七个,先找到从他之后第六个
                temp=temp->next;
            q=temp->next;           
            temp->next=q->next;
            delete q;
            temp=temp->next;   
            n--;             
    }
    return temp->data;
    }

    主函数:

    int main(){
    linknode test=creat(4);
    int theOne=left(test,1,4);
    int a=theOne;
    cout<<a<<endl;
    }

  • 相关阅读:
    学习Linux二(创建、删除文件和文件夹命令)
    合理的需求
    两种事件触发的jquery导航菜单
    JS中this关键字
    Hibernate的session问题
    JQUERY图片特效
    学习Linux一(安装VMware和Ubuntu)
    A标签跳转问题
    WEBSERVICE简介
    IE下设置Cursor的一点记录
  • 原文地址:https://www.cnblogs.com/zymcpp/p/5862485.html
Copyright © 2011-2022 走看看