순환 연결 목록에 대해 작성한 코드에 다음은 link입니다. 아래 코드도 붙여 넣습니다.단일 연결 목록에서 순환 연결 목록으로의 변환
typedef struct node
{
int value;
struct node *next;
}mynode;
mynode *head, *tail, *temp,*sp,*fp;
void add(int value);
void iterative_reverse();
void print_list();
void findcycle();
int main()
{
head=(mynode *)0;
add(1);
add(2);
add(3);
//print_list();
findcycle();
return(0);
}
void add(int value)
{
temp = (mynode *) malloc(sizeof(struct node));
temp->value=value;
temp->next=(mynode *)0;
if(head==(mynode *)0)
{
head=temp;
tail=temp;
}
else
{
tail->next=temp;
tail=temp;
tail->next=head;
temp->next=head;
}
}
void findcycle()
{
if (head == NULL || head->next == NULL)
printf("null");
sp=head;
fp=head->next;
while (fp != NULL && fp->next != NULL)
{
if ((fp == sp) || (fp->next == sp))
printf("Cycle");
sp = sp->next;
fp = fp->next->next;
}
printf("Not a Cycle");
}
void print_list()
{
for(temp=head; temp!=tail; temp=temp->next)
printf("[%d]->",(temp->value));
}
필자는 처음에는 싱글 용으로 작성한 다음 몇 개의 포인터를 원형으로 변경했습니다. 나는 그것을 추적 할 수 없으므로 시간 초과를받을 수있는 실수를하고있다. 제발 제안 해주세요.
고마워요.
나쁘다! 실수를 많이 .. 고마워. – Ava
@vartika : 그러면 가장 좋은 대답을 upvote 및/또는 받아 들여야합니다. – Massimo
두 답변 모두 똑같다고 제안했지만 예 자세한 설명이었습니다. 내가 어떻게 upvote합니까? – Ava