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