剑指offer之C++语言实现链表(两种删除节点方式)

1 问题

用C++语言实现链表

 

 

 

 

 

2 代码实现

#include 
#include 

using namespace std;

class List
{
public:
	List();
	~List();
	List* createNode(int value);//创建节点
	bool insertNode(List *node);//插入节点
	void printList();//打印节点
	bool deleteNode(List *node);//删除节点不移动头节点
	bool deleteNode1(List *node);//删除节点移动头节点
	int listSize();//长度
	void printNode();//打印但前的value
	void freeList();//释放链表
private:
	int value;
	List *head;
	List *next;
};

bool List::deleteNode(List *node)
{
	if (node == NULL)
	{
		std:cout << "node is NULL" << std::endl;	
		return false;
	}
	if (head == NULL)
	{
		std::cout << "head is NULL" << std::endl;	
		return false;
	}
	//如果node等于head
	if (head == node)
	{
		head = head->next;
	}
	List *p = head;
	while (p->next != NULL)
	{
		if (p->next == node)
		{
			p->next = p->next->next;
			return true;
		}
		p = p->next;
	}

你可能感兴趣的:(剑指offer)