链表

struct ListNode{
    int m_nValue;
    ListNode* m_pNext;
}

ListNode* CreateListNode(int value);
void ConnectListNodes(ListNode* pCurrent, ListNode* pNext);
void PrintListNode(ListNode* pNode);
void PrintList(ListNode* pHead);
void DestroyList(ListNode* pHead);
void AddToTail(ListNode** pHead, int value);
void RemoveNode(ListNode** pHead, int value);
//创建链表 ListNode* CreateListNode(int value){ ListNode* pNode = new ListNode(); pNode->m_nValue = value; pNode->m_pNext = nullptr; return pNode; } //添加元素 void AddToTail(ListNode** pHead,int value){ ListNode* pNew = new ListNode(); pNew->value = value; pNew->next = nullptr; if(*pHead == nullptr) *pHead = pNew; else{ ListNode* pNode = new ListNode(); pNode = *pHead; while(*pHead != nullptr) pHead = pHead->m_pNext; pNode->m_pNext = pNew; } } //删除元素 void RemoveNode(ListNode** pHead,int value){ if(pHead == nullptr || *pHead == nullptr) return; ListNode* pToBeDeleted = nullptr; if((*pHead)->m_nValue == value){ pToBeDeleted = *pHead; *pHead = (*pHead)->m_pNext; } else{ ListNode* pNode = *pHead; while(pNode->m_pNext != nullptr && pNode->m_pNext->m_nValue != value) pNode = pNode->m_pNext; if(pNode->m_pNext != nullptr && pNode->m_pNext->m_nValue == value){ pToBeDelted = pNode->m_pNext; pNode->m_pNext = pNode->m_pNext->m_pNext; } } if(pToBeDeleted != nullptr){ delete pToBeDeleted; pToBeDeleted = nullptr; } } //销毁链表 void DestroyList(ListNode* pHead){ ListNode* pNode = pHead; while(pNode != nullptr){ pHead = pHead->m_pNext; delete[] pNode; pNode = pHead; } } //打印链表 void PrintList(ListNode* pHead){ printf("PringList starts.\n"); ListNOde* pNode = pHead; whiel(pNode != nullptr){ printf("%d\t",pNode->m_nValue); pNode = pNode->m_pNext; } printf("PrintLisr end.\n"); } //打印节点 void PrintListNode(ListNode* pNode){ if(pNode == nullptr){ printf("The node is nullptr.\n"); } else{ printf("The key node is %d.\n",pNode->m_nValue); } } //连接两个节点 void ConnectListNodes(ListNode* pCurrent,ListNode* pNext){ if(pCurrent == nullptr){ printf("Error to connect two nodes.\n"); exit(1); } pCurrent->m_pNext = pNext; }

 

posted @ 2018-10-29 14:57  OVS98  阅读(100)  评论(0编辑  收藏  举报