📄 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 + -