조세 프 링 데이터 구조
16702 단어 데이터 구조
#define MAXSIZE 9999
typedef struct node{
int number;
int code;
struct node *piror;
struct node *next;
} *DLnode,DLinklist; //
DLnode creat_Linklist(int n,int array_code[]);
int *joseph_circle(DLnode head,int n,int m);
#include
#include
DLnode creat_DLinklist(int n,int array_code[])
{
int i;
DLnode tail;
DLnode head =(DLnode)malloc(sizeof(node));
head->next= head;
head->number=1;
head->code=array_code[0];
tail=head; //
for(i=2;i<=n;i++)
{
DLnode p=(DLnode)malloc(sizeof(node));
p->number=i;
p->code=array_code[i-1];
p->next=tail->next;
tail->next=p;
p->piror=tail;
tail=p;
head->piror=tail; //
}
return (head);
}
int *joseph_circle(DLnode head,int n,int m)
{
int i,j;
j=0;
static int out_sequence[MAXSIZE];
out_sequence[MAXSIZE]={0}; //
DLnode p;
while(head->next!=head){
p=head;
for(i=0;i<m;i++)
p=p->next; // m
out_sequence[j]= p->number;
j++;
m=p->code;
p->next->piror=p->piror;
p->piror->next=p->next; // m
if(p==head)
head=p->next; // ,
free(p);
}
out_sequence[j] =head->number;
return (out_sequence);
}
int main()
{
int i,n,m;
int array_code[MAXSIZE];
DLnode head;
int *r; //
while(1){
printf("please input n: ");
scanf("%d",&n);
printf("please input code arry: ");
for(i=0;i<n;i++)
scanf("%d",&array_code[i]);
printf("please input m: ");
scanf("%d",&m);
head=creat_DLinklist(n,array_code);
printf("out sequence: ");
r=joseph_circle(head ,n, m);
for(i=0;i<n;i++)
printf("%d ",*(r+i));
printf("
");
array_code[MAXSIZE]={0}; // array_code
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.