#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;
}
循环报数问题
最新推荐文章于 2021-10-29 16:25:44 发布