溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

單鏈表的環(huán)操作

發(fā)布時間:2020-07-08 06:02:17 來源:網(wǎng)絡(luò) 閱讀:510 作者:I慕藍(lán) 欄目:編程語言

鏈表介紹:

鏈表概念--鏈表是一種線性表,但是并不是順序存儲,而是每個節(jié)點(diǎn)里面存儲著下一個節(jié)點(diǎn)的指針,把存儲數(shù)據(jù)元素的數(shù)據(jù)串鏈起來。

單鏈表的環(huán)操作單鏈表演示圖:單鏈表的環(huán)操作


創(chuàng)建結(jié)構(gòu)體

typedef int DataType;

typedef struct ListNode

{

DataType data;

struct ListNode *pNext;

}SListNode, *PSListNode;



求環(huán)入口點(diǎn):


單鏈表的環(huán)操作單鏈表的環(huán)操作單鏈表的環(huán)操作


PSListNode FindEnterNode(PSListNode pHead, PSListNode pMeetNode)

{

PSListNode pNode1 = pHead;

PSListNode pNodeM = pMeetNode;

if (pHead == NULL || pMeetNode == NULL)

{

return NULL;

}

while (pNode1 != pNodeM)

{

pNode1 = pNode1->pNext;

pNodeM = pNodeM->pNext;

}

return pNode1;

}


判斷兩個鏈表


是否相交:


單鏈表的環(huán)操作


int IsListCroseWithCycle(PSListNode pL1, PSListNode pL2)

{

PSListNode pL1MeetNode = NULL;

PSListNode pL2MeetNode = NULL;

PSListNode pL1Node = pL1;

PSListNode pL2Node = pL2;

PSListNode pNode = NULL;

if (pL1 == NULL || pL2 == NULL)

{

return 0;

}

pL1MeetNode = HasCycle(pL1Node);

pL2MeetNode = HasCycle(pL2Node);


//都不帶環(huán)

if (pL1MeetNode == NULL && pL2MeetNode == NULL)

{

while (pL1Node->pNext != NULL)

{

pL1Node = pL1Node->pNext;

}

while (pL2Node->pNext != NULL)

{

pL2Node = pL2Node->pNext;

}

if (pL1Node == pL2Node)

{

return 1;

}

return 0;

}


//兩個都帶環(huán)

if (pL1MeetNode != NULL && pL2MeetNode != NULL)

pNode = pL1MeetNode;

{

while (pNode->pNext != pL1MeetNode)

{

if (pL2MeetNode == pNode)

{

return 1;

}

pNode = pNode->pNext;

}

return 0;

}

}


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI