原题链接:[编程入门]链表之报数问题
#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
int data;
struct Node* next;
}Node;
Node* AddAtEnd(Node** head,int data){
Node* new_node = (Node*)malloc(sizeof(Node));
new_node->data = data;
new_node->next = NULL;
if(*head == NULL)
{
*head = new_node;
return new_node;
}
Node *cur = *head;
while(cur->next!=NULL)
{
cur = cur->next;
}
cur->next = new_node;
return new_node;
}
Node* deleteNode(Node **head){
Node* cur = *head;
if(cur==cur->next->next) //只剩两个数的情况
{
cur->next = NULL;
return cur;
}
else //剩三个数以上
{
Node *temp = cur->next->next;
cur->next = cur->next->next;
return temp;
}
}
int main(){
int n;
scanf("%d",&n);
Node* head = NULL;
Node* node = NULL;
for (int i = 0; i < n; i++)
{
node = AddAtEnd(&head,i+1);
}
node->next = head;
Node* now = head;
while(now->next!=NULL)
{
now = now->next;
now = deleteNode(&now);
//printf("%d\n",now->data);
}
printf("%d\n",now->data);
return 0;
}0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复