链表:在链表的末尾添加一个节点+删除链表中值为value的节点
Posted 努力奋斗-不断进化
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表:在链表的末尾添加一个节点+删除链表中值为value的节点相关的知识,希望对你有一定的参考价值。
链表介绍
链表是动态数据结构。
// 在链表的末尾增加一个节点
struct ListNode
int m_nValue;
ListNode* m_pNext;
;
// 在链表的末尾增加一个节点
void AddToTail(ListNode** PHead, int value)
ListNode pNew = new ListNode();
pNew->m_nValue = value;
pNew->m_pNext = NULL;
if (*pHead == NULL)
*pHead = pNew;
else
ListNode* pNode = *pHead;
while (pNode->m_pNext != NULL) //目的是找最后一个节点
pNode = pNode->m_pNext; //变成下一个节点
pNode->m_pNext = pNew; //找打了最后一个节点,把最后一个节点指向新加入的节点
//删除链表中值为value的节点
void RemoveNode(ListNode** pHead, int value)
if (pHead == NULL || *pHead == NULL)
return;
ListNode* pToBeDeleted = NULL;
if ((*pHead)->m_nValue == value)
pToBeDeleted = *pHead;
*pHead = (*pHead)->m_pNext;
else
ListNode* pNode = *pHead;
while (pNode->m_pNext != NULL && pNode->m_pNext->m_nValue!=value)
pNode = pNode->m_pNext; //下一个节点不是空,且值不是目标值
if (pNode->m_pNext != NULL && pNode->m_pNext->m_nValue == value) //下一个节点不是空,且值是目标值
pToBeDeleted = pNode->m_pNext;
pNode->m_pNext = pNode->m_pNext->m_pNext;//把指针指向下一个的下一个,相当于把下一个节点从链表中给删除了
if (pToBeDeleted != NULL)
delete pToBeDeleted; //相当于在内存中删除了
pToBeDeleted = NULL;
以上是关于链表:在链表的末尾添加一个节点+删除链表中值为value的节点的主要内容,如果未能解决你的问题,请参考以下文章