首页 > 其他 > 详细

剑指offer-基础练习-链表-增删节点

时间:2019-11-06 21:04:24      阅读:80      评论:0      收藏:0      [点我收藏+]
/*
链表基本操作:
	插入节点和删除节点
*/
/*
思路:
	使用指向链表的头指针,这样在新插入节点后,头指针不会改变
*/

struct ListNode{
	int value;
	ListNode* next;
}

void AddToTail(ListNode** pHead,int value){
	if(pHead == null){
		return;
	}
	//新建节点
	ListNode *pNew = new ListNode();
	pNew->value = value;
	pNew->next = null;
	
	//当为空链表时
	if(*pHead == null){
		*pHead = pNew;
	}else{
		//遍历到链表的最后一个节点
		ListNode *pNode = *pHead;
		while(pNode->next != null){
			pNode = pNode->next;
		}
		pNode->next = pNew;
	}
}

void RemoveNode(ListNode** pHead,int value){
	if(pHead == null || *pHead == null){
		return;
	}
	ListNode* toBeDeleted = null;
	ListNode* pNode = pHead;
	
	
	if((*pHead)->value == value){
		toBeDeleted = *pHead;
		pHead = toBeDeleted;
	}else{
		while(pNode->next != null && pNode->next->value != value){
			pNode = pNode->next;
		}
		if(pNode->next != null && pNode->next->value == value){
			toBeDeleted = pNode->next;
			pNode->next = pNode->next->next;
		}
	}		
	
	if(toBeDeleted != null){
		delete(toBeDeleted);
		toBeDeleted = null;
	}
}

   

剑指offer-基础练习-链表-增删节点

原文:https://www.cnblogs.com/buaaZhhx/p/11808490.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!