#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int num;
struct node* next;
}NODE,*PNODE;
PNODE creat_(int n)
{
PNODE head,p,q;
int num_=1;
head=(PNODE)malloc(sizeof(NODE));
head->next=NULL;
q=head;
head->num=num_;
n--;
while(n--)
{
p=(PNODE)malloc(sizeof(NODE));
num_=num_+1;
p->num=num_;
q->next=p;
q=p;
}
q->next=head;
return head;
}
void adjust(PNODE head,int n,int m)
{
int i=1;
int t=0;
PNODE q,p;
q=head;
if(m==1)
{
while(n--)
{
printf("%d ",q->num);
q=q->next;
}
printf("\n");
}
else
{
while(t<n*m)
{
t++;
if(i==(m-1))
{
p=q->next;
q->next=p->next;
printf("%d",p->num);
printf(" ");
i=0;
}
else
{
q=q->next;
i++;
}
}
printf("\n");
}
}
int main()
{
int i,p;
PNODE head;
while(scanf("%d",&i)!=EOF)
{
head=creat_(i);
scanf("%d",&p);
adjust(head,i,p);
}
return 0;
}
链表—约瑟夫环
最新推荐文章于 2025-04-25 11:19:47 发布
本文介绍了一个使用C语言实现的循环链表创建及调整过程。该程序能够根据输入的数值生成一个循环链表,并实现特定的调整算法。通过此算法可以演示链表中节点的删除过程,对于理解链表的基本操作及其应用场景具有一定的参考价值。

1919

被折叠的 条评论
为什么被折叠?



