⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 josoph.c

📁 课程实验是做的Josoph算法
💻 C
字号:
#include<stdio.h>
#include<malloc.h>
typedef int DataType;
typedef struct Josoph{
    DataType data;
    struct Josoph*next;
}JosophNode,*JosophLink;

//创建长度为n的无头结点的单循环链表
JosophLink JosophLink_creat(int n)
{
    JosophLink head,move,temporary;
    int i=1;

    for(i=1;i<=n;i++)
    {
        temporary=(JosophLink)malloc(sizeof(JosophNode));
        temporary->data=i;

        if(i==1)
        {
            head=temporary;
            move=head;
        }
        else
        {
            move->next=temporary;
            move=move->next;
        }
    }

     move->next=head;
     return head;
}

//找出符合条件的结点输出其值,并删除节点


void JosophLink_del(JosophLink L,int linklength,int k)
{
     JosophLink move,temp;
     int i=1;
     move=L;


     while(linklength>1)
     {
        if(i%k==k-1)
        {
             temp=move->next;
             move->next=temp->next;
             move=move->next;
             i+=2;
             linklength--;
             printf("%5d",temp->data);


        }
        else
        {
            move=move->next;
            i++;
        }
     }
        printf("%5d",move->data);
}


void LinkedListTraverse(JosophLink L,int n)
 {
    int i=1;
    JosophLink outlink;
    outlink=L;
    while(outlink&&i<=n)
    {
        printf("%5d",outlink->data);
        outlink=outlink->next;
        i++;
    }
 }


void main()
{
    JosophLink header;
    int n,k;
    printf("PLease input a integer N:");
    scanf("%d",&n);
    printf("please inpur ai integer less than N:");
    scanf("%d",&k);
    printf("Normal Josoph:");
    header=JosophLink_creat(n);
    LinkedListTraverse(header,n);
    printf("\n");
    printf("NeW Josoph:");
    JosophLink_del(header,n,k);
    printf("\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -