循环报数问题

来源:互联网 发布:淘宝客户信誉度怎么看 编辑:程序博客网 时间:2024/05/20 11:24
#include "stdafx.h"#include "stdlib.h"typedef struct _node{int data;struct _node *next;}node;void create(node *&head, node *&tail, int n){if (n < 1){head = NULL;return;}head = (node *)malloc(sizeof(node));head->data = 1;head->next = NULL;node *p = head;for (int i = 2; i < n+1; i++){p->next = (node *)malloc(sizeof(node));p = p->next;p->data = i;p->next = NULL;}tail = p;tail->next = head;}void print(node *head){node *p = head;while (p && (p->next != head)){printf("%d ", p->data);p = p->next;}if (p)printf("%d\n", p->data);}void count_print(node *&head,node *&tail,int m){int cnt = m - 1;node * cur = head;node * pre = tail;while (cur && cur != cur->next){if (cnt){cnt--;pre = cur;cur = cur->next;}else{pre->next = cur->next;printf("%d ", cur->data);free(cur);cur = pre->next;cnt = m - 1;}}if (cur){printf("the last num is %d\n", cur->data);free(cur);head = tail = NULL;}}int _tmain(int argc, _TCHAR* argv[]){node *head = NULL;node *tail = NULL;int n,m;scanf_s("%d", &n);scanf_s("%d", &m);create(head,tail,n);print(head);count_print(head, tail,m);return 0;}

0 0
原创粉丝点击