在无头单链表的一个非头节点前插入一个节点(C语言)
生活随笔
收集整理的這篇文章主要介紹了
在无头单链表的一个非头节点前插入一个节点(C语言)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
①時間復(fù)雜度為N:
void InsertNotHead(PSListNode pHead, PSListNode pos, DataType data) {PSListNode pPreNode = pHead;PSListNode pPreNode = pHead;if (NULL == pos){return;}else{//先找到pos結(jié)點(diǎn)前面的結(jié)點(diǎn)while(pCurNode != pos){pPreNode = pCurNode;pCurNode = pCurNode->pNextNode;}PSListNode pNewNode = ByeNode(data);if (NULL == pNewNode){printf("開辟結(jié)點(diǎn)空間失敗!\n");return;}else{//把插入的結(jié)點(diǎn)插入pos前面的結(jié)點(diǎn)與pos結(jié)點(diǎn)之間pPreNode->pNextNode = pNewNode;pNewNode->pNextNode = pCurNode;}} }②時間復(fù)雜度為1:
void InsertNotHead(PSListNode pos, DataType data) {if (NULL == pos){return;}else{PSListNode pNewNode = ByeNode(data);if (NULL == pNewNode){printf("開辟結(jié)點(diǎn)空間失敗!\n");return;}else{//交換pos和pNewNode的數(shù)據(jù)(相當(dāng)于交換了兩個結(jié)點(diǎn)的位置),使問題轉(zhuǎn)換為在pos指向的結(jié)點(diǎn)的下一個結(jié)點(diǎn)處插入新結(jié)點(diǎn)pNewNode->data = pos->data;pos->data = data;pNewNode->pNextNode = pos->pNextNode;pos->pNextNode = pNewNode;}} }總結(jié)
以上是生活随笔為你收集整理的在无头单链表的一个非头节点前插入一个节点(C语言)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 长安渝北工厂机器人_长安UNI-T智能工
- 下一篇: unix系统编码 java_JAVA字符