zoukankan      html  css  js  c++  java
  • 约瑟夫环问题(带头节点)

      

    /*
    总结:就是建立一个循环单链表,再按循环取余删除节点:
    注意:1.未给指针变量s分配动态内存时,让其等于别的分配内存的指针(q)相当于
    把 s指向其内存,并不能建立链接。
    2.此链表带头节点
    遇到问题 :1.在选择人的时候遇到了阻碍(不知如何选)

                   2.设置头节点,循环(难点)


    */#include<stdio.h>
    #include<malloc.h>
    #include<stdlib.h>
    static int count;
    typedef struct node
    {
    int num;
    struct node *next;
    }lnode,*linklist;

    linklist creat(linklist l,int n)
    {
    linklist p,s,q;
    int i; count=n;
    p=(linklist)malloc(sizeof(lnode));
    p->next=NULL;
    l->next=p;
    p->num=1;
    s=p;
    for(i=2;i<=n;i++)
    {
    q=(linklist)malloc(sizeof(lnode));
    q->num=i;
    s->next=q;
    s=q;
    }
    s->next=l->next;
    return l;


    }

    void select(linklist l,int m)
    {
    linklist p,q,s;
    int i,j,t=0;
    p=l;
    for(i=0;i<count;i++)//输出八个值
    {
    for(j=1;j<m;j++)//指针右移
    {
    p=p->next;
    }
    q=p->next;
    printf("%d ",q->num);
    p->next=q->next;//注意赋值和链接的区别 和next有关;
    free(q);//注意:删除节点1后,从节点5开始;
    }

    }


    int main()
    {
    linklist l,s;
    l=(linklist)malloc(sizeof(lnode));
    int n,m;
    printf("请输入人数 n: ");
    scanf("%d",&n);
    creat(l,n);
    printf("数到的数字是 m: ");
    scanf("%d",&m);
    select(l,m);

    return 0;
    }

  • 相关阅读:
    zabbix:乱码问题
    zabbix--微信报警(未完成)
    ansible-playbook项目(4)
    ansible-playbook(3)
    备份和校验脚本-邮件通知
    rsync
    keepalived
    双机热备
    nginx负载均衡
    LNMP(5)
  • 原文地址:https://www.cnblogs.com/mykonons/p/5870359.html
Copyright © 2011-2022 走看看