当使用C++编程语言时,链表是一种经常用到的数据结构。在这里,我将为大家提供一份完整的C++代码示例,以帮助大家在实践中轻松理解如何实现链表。
链表定义
首先,我们需要定义链表数据结构的类。这个类将包含链表节点的定义和初始化方法。
class Node
{
public:
int data;
Node* next;
Node(int data) : data(data), next(NULL) {};
};
class LinkedList
{
public:
Node* head;
LinkedList() : head(NULL) {};
};
这个代码中我们定义了一个链表和一个链表节点类。链表类包含了一个指向链表头节点的指针。
添加节点到链表
接下来,我们将看到如何往链表中添加节点。我们将定义一个名为addNode的方法,用于将新节点添加到链表尾部。
void addNode(LinkedList& list, int data)
{
Node* newNode = new Node(data);
if (list.head == NULL)
{
list.head = newNode;
}
else
{
Node* currentNode = list.head;
while (currentNode->next != NULL)
{
currentNode = currentNode->next;
}
currentNode->next = newNode;
}
}
这个方法首先创建一个新的节点,然后检查链表是否为空。如果链表为空,我们就将新节点设置为链表头。如果链表不为空,我们就遍历链表直到找到最后一个节点,然后将新节点添加到它的尾部。
从链表中删除节点
现在,我们需要实现一个方法,用于从链表中删除节点。我们将定义一个名为deleteNode的方法,用于接收一个数据值并从链表中删除它所在的节点。
void deleteNode(LinkedList &list, int data)
{
if (list.head == NULL)
{
return;
}
Node* currentNode = list.head;
Node* previousNode = NULL;
while (currentNode != NULL)
{
if (currentNode->data == data)
{
if (currentNode == list.head)
{
list.head = currentNode->next;
}
else
{
previousNode->next = currentNode->next;
}
delete currentNode;
return;
}
previousNode = currentNode;
currentNode = currentNode->next;
}
}
这个方法首先检查链表是否为空。如果链表为空,它将什么都不做。否则,它将遍历链表,在节点值与删除数据相同时从链表中删除节点。
示例1:向链表中添加节点
下面是一个示例代码,用于展示如何向早先定义好的链表对象中添加节点。
LinkedList list;
addNode(list, 1);
addNode(list, 2);
addNode(list, 3);
这个代码片段将创建一个新的空链表,并分别添加数据为1、2、3的节点。
示例2:从链表中删除节点
以下是一个示例代码,用于展示如何从早先定义好的链表对象中删除节点。
LinkedList list;
addNode(list, 1);
addNode(list, 2);
addNode(list, 3);
deleteNode(list, 2);
这个代码片段将创建一个新的空链表,分别添加数据为1、2、3的节点,然后删除数据为2的节点。
至此,我们已经讲解了如何使用C++实现链表的简单增删操作。在实践中,链表还有更多高级操作用于支持算法应用。如果您对于这些操作感兴趣,我建议您继续学习链表的其他知识点以更深入的理解链表数据结构。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ 数据结构链表的实现代码 - Python技术站