用c++写一个单链表的基本操作
时间: 2024-05-06 14:17:34 浏览: 11
下面是一个简单的单链表的基本操作的实现,包括初始化、添加节点、删除节点、查找节点、遍历节点等。
```c++
#include <iostream>
using namespace std;
//定义节点结构体
struct ListNode
{
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
class LinkedList
{
public:
//构造函数
LinkedList()
{
head = new ListNode(0);
}
//析构函数
~LinkedList()
{
ListNode* p = head;
while (p != NULL)
{
ListNode* temp = p;
p = p->next;
delete temp;
}
}
//添加节点
void addNode(int x)
{
ListNode* p = head;
while (p->next != NULL)
{
p = p->next;
}
ListNode* newNode = new ListNode(x);
p->next = newNode;
}
//删除节点
void deleteNode(int x)
{
ListNode* p = head;
while (p->next != NULL)
{
if (p->next->val == x)
{
ListNode* temp = p->next;
p->next = p->next->next;
delete temp;
return;
}
p = p->next;
}
}
//查找节点
ListNode* findNode(int x)
{
ListNode* p = head;
while (p != NULL)
{
if (p->val == x)
{
return p;
}
p = p->next;
}
return NULL;
}
//遍历节点
void printList()
{
ListNode* p = head->next;
while (p != NULL)
{
cout << p->val << " ";
p = p->next;
}
cout << endl;
}
private:
ListNode* head;
};
int main()
{
LinkedList list;
list.addNode(1);
list.addNode(2);
list.addNode(3);
list.printList();
list.deleteNode(2);
list.printList();
ListNode* node = list.findNode(3);
if (node != NULL)
{
cout << "Find node: " << node->val << endl;
}
else
{
cout << "Node not found!" << endl;
}
return 0;
}
```
这里定义了一个 `ListNode` 结构体表示链表中的节点,包括节点的值和指向下一个节点的指针。`LinkedList` 类包含了单链表的基本操作,包括构造函数、析构函数、添加节点、删除节点、查找节点、遍历节点等。在主函数中,我们创建了一个 `LinkedList` 类的实例,然后进行一些基本操作,包括添加节点、删除节点、查找节点和遍历节点。