25分求助qaq
查看原帖
25分求助qaq
866144
holo_23楼主2022/12/19 09:47
#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
	int num;
	struct Node* next;
}Node;
void Link_create(Node **p_head,Node *p_new)
{
	 Node *p_move=*p_head;
	 if(*p_head==NULL)
	 {
	 	*p_head=p_new;
		 p_new->next=*p_head; 
	 }
	 else
	 {
	 	while(p_move->next!=*p_head)
	 	{
	 		p_move=p_move->next;
		}
		p_move->next=p_new;
		p_new->next=*p_head;
	 }
}
Node* del(Node *p)
{
	Node *pb=p;
	printf("%d ",p->num); 
	while(pb->next->num!=p->num)
	{
		pb=pb->next;
	}
	Node *p_free=p;
	pb->next=p->next;
	free(p_free);
	p_free=NULL; 
	return pb->next;
}
Node* Fun(Node *p_head,int n)
{
	int cnt1=0;//cnt1是记录删除了多少个数; 
	Node *p_move=p_head;
	while(1)
	{
		int cnt2=0;//记录每各两个数删除一次;
		for(cnt2=0;cnt2<2;cnt2++)
		{
			p_move=p_move->next;
		}
		p_move=del(p_move);
		cnt1++;
		if(n-cnt1<2)
		break;
	}
	return p_move;	
} 
int main()
{
	int n;
	Node *p_new=NULL,*p_head=NULL;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		p_new=(Node*)malloc(sizeof(Node));
		p_new->num=i;
		Link_create(&p_head,p_new);
	}
	p_head=Fun(p_head,n);
	printf("%d\n",p_head->num);
	Node* p_free=p_head;
	free(p_free);
	p_free=NULL;
}
2022/12/19 09:47
加载中...