剑指剑指offer之之C++语言实现链表语言实现链表(两种删除节点方式两种删除节点方式)
1 问题问题
用C++语言实现链表
2 代码实现代码实现
#include <iostream>
#include <stdlib.h>
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;
}
return false;
}
bool List::deleteNode1(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 (head->next != NULL)
{