void SListPrintbacktofirst(SListNode*pHead)
{
SListNode*prev=NULL;
SListNode*tail=NULL;
while(tail!=pHead)
{
prev=pHead;
while(prev->_next!=tail)
{
prev=prev->_next;
}
printf("%d ",prev->_data);
tail=prev;
}
}
void SListPrintbacktofirst(SListNode*pHead)
{
if(pHead==NULL)
return;
else
{
SListPrintbacktofirst(pHead->_next);
printf("%d ",pHead->_data);
}
}
void SListEraseNotail(SListNode*pos)
{
SListNode*prev=NULL;
assert(pos&&pos->_next);
prev=pos->_next;//保存pos->next的值方便销毁
pos->_data=prev->_data;
pos->_next=prev->_next;
free(prev);
}
void SListInsert(SListNode*pos,DataType x)
{
SListNode* newNode=BuySListNode(x);
newNode->_next=pos->_next;
pos->_next=newNode;
newNode->_data=pos->_data;
pos->_data=x;
}
void SListJosephCircle(SListNode*pHead)
{
SListNode*cur=pHead;
SListNode*prev=NULL;
int k=0;
while(cur->_next)
{
cur=cur->_next;
}
cur->_next=pHead;
while(pHead!=pHead->_next)
{
pHead=pHead->_next;
k++;
if(k==2)
{
prev=pHead->_next;
pHead->_next=prev->_next;
k=0;
free(prev);
prev=NULL;
}
}
printf("%d\n",pHead->_data);
}