s99q


私信TA

用户名:20206805

访问量:17570

签 名:

在否定中提升自己

等  级
排  名 290
经  验 5662
参赛次数 0
文章发表 91
年  龄 19
在职情况 学生
学  校 东大
专  业 软件工程

  自我简介:

代码是大一上学期写的,格式等都不规范,请多包涵。编写的代码,有些是为了练习库函数的使用,所以看着可能比较怪或者难以理解。


解题思路:利用链表,并在链表内部申明一个整型来简化过程

注意事项:

!!!!!!!!!!!!释放空间的代码位置要适宜!!!!!!!!!!!!

参考代码:

typedef struct who
{
	int n;                               //对应相应的号数
	struct who* next;                         //在结构体内部定义一个结构体指针,以便于指向下一个结构体
}*who0, who1;


#include #include #include int main()
{
	who0 head = (who0)malloc(sizeof(who1)),p = NULL,q = NULL;   //定义头指针,空间的申请
	head->n = 1;                              //得到相应的号数
	p = head;
	int N, i = 1 ;
	scanf("%d", &N);
	while (i < N )                          //循环来使节点与标号相对应
	{
		q = (who0)malloc(sizeof(who1));
		q->n = i + 1;
		p->next = q;
		q->next = NULL;
		p = q;
		i++;
	}
	q->next = head;
	p = head;
	while (1)                              //巧用1,在适当的位置才停止
	{
		for (i = 1; i < 3; i++)
		{
			q = p;
			p = p->next;
		}
		q->next = p->next;

		if (p->n == p->next->n)                    //停止的条件
		{
			break;
		}
		free(p);                            //释放不要的空间
		p = q->next;
	}
	printf("%d\n", p->n);
	free(p);                                //打印出相应的位置号数后释放空间
}


 

0.0分

1 人评分

  评论区

  • «
  • »