原题链接:[编程入门]链表之报数问题
#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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复