1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 击鼓传花-C语言

击鼓传花-C语言

时间:2020-10-31 22:26:27

相关推荐

击鼓传花-C语言

题目

1.头文件

#include<stdio.h>//C#include<malloc.h>//分配链表结点内存

2.定义结点(每个结点是一个小孩)

struct Node//结点{int num;//数字域代表小孩序号Node *next;//指向下一个结点};

3.初始化(组织开始游戏)

Node* Children(int n) {//初始化Node *head,*cur,*s;head = (Node*)malloc(sizeof(Node));//分配头节点内存head->next = NULL;//头节点初始化cur = head;//从头结点开始for (int i = 0; i < n; i++) {s = (Node*)malloc(sizeof(Node));//分配要插入结点的内存s->num = i + 1;//赋值s->next = cur->next;//插入操作,这个不会的看我之前的文章cur->next = s;//插入操作cur = s;//s作为新的当前结点赋值给current}cur->next = head->next;//做成循环链表return head;//返回链表头结点相当于是返回链表}

4.小孩表演之后下台

void deleteNode(Node *a) {//结点删除操作a->num = a->next->num;//相当于是把后一个结点覆盖到当前结点来删除Node* b = a->next;a->next = b->next;delete(b);}

5.主函数

int main() {int N = 5;Node* head = Children(N);//初始化Node* last = head->next;while (last->next!=last) {//循环链表判空last = last->next->next;deleteNode(last);}printf("%d", last->num);//输出最后一个小孩的序号return 0;}

完整程序

#include<stdio.h>#include<malloc.h>struct Node//结点{int num;Node *next;};Node* Children(int n) {//初始化Node *head,*cur,*s;head = (Node*)malloc(sizeof(Node));head->next = NULL;cur = head;for (int i = 0; i < n; i++) {s = (Node*)malloc(sizeof(Node));s->num = i + 1;s->next = cur->next;cur->next = s;cur = s;}cur->next = head->next;return head;}void deleteNode(Node *a) {a->num = a->next->num;Node* b = a->next;a->next = b->next;delete(b);}int main() {int N = 5;Node* head = Children(N);Node* last = head->next;while (last->next!=last) {last = last->next->next;deleteNode(last);}printf("%d", last->num);return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。