单链表实现约瑟夫环(JosephCircle)(C语言)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                单链表实现约瑟夫环(JosephCircle)(C语言)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                
                            
                            
                            //使鏈表形成一個(gè)環(huán)
void FormCyc(PSListNode *pHead)
{if (NULL == pHead){return;}else{PSListNode pNode = *pHead;while (NULL != (pNode->pNextNode)){pNode = pNode->pNextNode;}pNode->pNextNode = *pHead;}
}PSListNode JosephCircle(PSListNode pHead, int M)
{if ((NULL == pHead) || (M <= 0)){return NULL;}else{//讓鏈表中所有元素形成一個(gè)環(huán)FormCyc(&pHead);PSListNode pPreNode = NULL;PSListNode pCurNode = pHead;PSListNode pDesNode = NULL;int temp = M;while (pCurNode->pNextNode != pCurNode){temp = M;pPreNode = pCurNode;while (--temp){pPreNode = pCurNode;pCurNode = pCurNode->pNextNode;}//記住要從鏈表中刪除的節(jié)點(diǎn)的位置,把它的空間釋放了pDesNode = pCurNode;pCurNode = pCurNode->pNextNode;pPreNode->pNextNode = pCurNode;free(pDesNode);pDesNode = NULL;}//如果M=1,就說(shuō)明所有結(jié)點(diǎn)都要被刪除,那么就返回空,否則就返回剩下的那個(gè)結(jié)點(diǎn)的指針if (1 == M){free(pCurNode);pCurNode = NULL;}else{pCurNode->pNextNode = NULL;}return pCurNode;}
}
                            
                        
                        
                        總結(jié)
以上是生活随笔為你收集整理的单链表实现约瑟夫环(JosephCircle)(C语言)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 信息安全学习路线图_Python学习图谱
- 下一篇: java字节流转字符串_字节流与字符流的
