ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

链表的插入和删除

2021-11-10 08:31:36  阅读:153  来源: 互联网

标签:ListNode 删除 pNode nullptr 链表 插入 pHead pNext


/*
* 往链表的末尾插入一个节点和在链表中查找某个节点并删除
*/

#include<iostream>

using namespace std;

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 = nullptr;

	if (*pHead == nullptr)
	{
		*pHead = pNew;
	}
	else
	{
		ListNode* pNode = *pHead;

		while (pNode->m_pNext != nullptr)
		{
			pNode = pNode->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)
		{
			pToBeDeleted = pNode->m_pNext;
			pNode->m_pNext = pNode->m_pNext->m_pNext;
		}
	}

	if (pToBeDeleted != nullptr)
	{
		delete pToBeDeleted;
		pToBeDeleted = nullptr;
	}
}

int main()
{
	ListNode* pList = nullptr;
	AddToTail(&pList, 1);
	AddToTail(&pList, 2);

	RemoveNode(&pList, 1);
	RemoveNode(&pList, 2);

	return 0;
}

/*
* 我们要特别注意函数的第一个参数pHead是一个指向指针的指针。当我们向一个空链表中
* 插入一个节点的时候,新插入的节点就是链表的头指针。由于此时会改动头指针,因此必须
* 把pHead参数设为指向指针的指针,否则出了这个函数pHead仍然时一个空指针。
*/

  

标签:ListNode,删除,pNode,nullptr,链表,插入,pHead,pNext
来源: https://www.cnblogs.com/xcxfury001blogs/p/15531841.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有