pragma once
include
bool _insert(NODE** head,int index)
{
NODE* node = (NODE*)malloc(sizeof(NODE));
memset(node,0x00,sizeof(NODE));
node->index = index;
if (*head == NULL)
{
*head = node;
node->next = node;
return true;
}
if ((*head)->index > node->index)
{
for (NODE* p = *head;;p=p->next)
{
if (p->next==*head)
{
node->next = *head;
p->next = node;
*head = node;
return true;
}
}
}
for (NODE* p = *head;; p = p->next)
{
if (p->next==*head)
{
node->next = p->next;
p->next = node;
return true;
}
if (node->index < p->next->index)
{
node->next = p->next;
p->next = node;
return true;
}
}
return NULL;
}
void _remove(NODE** list2, int i)
{
NODE* list3 = *list2;
NODE** list = &list3;
if (q->next == q)
{
//printf("%d", LIST->index);
return;
}
else
{
if (i == 2)
{
NODE* p = q->next;
q->next = q->next->next;
free(p);
_show(q);
i = 0;
}
_remove(&(q->next), i + 1);
}
}
//q先走一步,然后构造一个删除q->next的方法,(&(q->next), i + 1)从而达到删除第三个节点的目的;
//递归调用不断重复,当满足q->next=q时跳出函数;
void _show(NODE* list_tail)
{
NODE* p = NULL;
for (p = list_tail;; p = p->next)
{
printf("%d\n", p->index);
if (p->next == list_tail)
{
printf("--------------\n");
break;
}
}
return;
}
void main()
{
NODE* p = NULL;
_insert(&p,9);
_insert(&p,6);
_insert(&p,3);
_insert(&p,7);
_insert(&p,8);
_insert(&p,1);
_show(p);
_remove(&p,1);
system("pause");
}