C++ 链表

基本用法

C++提供了list容器,这是一个双向链表,能高效进行数据添加和删除。

引入头文件

#include <iostream>
#include <list>  // 引入list头文件
using namespace std;

创建和初始化 list


                
C++中的链表是一种常见的数据结构,它由一个节点序列组成,每个节点包含两部分:数据和指向下一个节点的指针。 以下是一个简单的链表类的示例代码: ``` #include<iostream> using namespace std; //定义链表节点结构体 struct ListNode{ int val; ListNode* next; ListNode(int x):val(x),next(NULL){} }; //定义链表类 class LinkedList{ private: ListNode* head; //链表头节点指针 public: LinkedList():head(NULL){} //构造函数 ~LinkedList(); //析构函数 void insert(int val); //在链表末尾插入节点 void remove(int val); //删除第一个值为val的节点 void display(); //遍历链表并输出节点值 }; LinkedList::~LinkedList(){ ListNode* current = head; while(current){ ListNode* temp = current; current = current->next; delete temp; } } void LinkedList::insert(int val){ ListNode* newNode = new ListNode(val); if(head == NULL){ head = newNode; } else{ ListNode* current = head; while(current->next){ current = current->next; } current->next = newNode; } } void LinkedList::remove(int val){ if(head == NULL){ return; } if(head->val == val){ ListNode* temp = head; head = head->next; delete temp; return; } ListNode* current = head; while(current->next && current->next->val != val){ current = current->next; } if(current->next){ ListNode* temp = current->next; current->next = current->next->next; delete temp; } } void LinkedList::display(){ ListNode* current = head; while(current){ cout << current->val << " "; current = current->next; } cout << endl; } int main(){ LinkedList list; list.insert(1); list.insert(2); list.insert(3); list.insert(4); list.display(); //输出: 1 2 3 4 list.remove(3); list.display(); //输出: 1 2 4 return 0; } ``` 在上面的代码中,我们定义了一个链表类LinkedList,它包含一个节点指针head。我们在类的构造函数中将head初始化为NULL,在析构函数中释放链表中所有节点的内存空间。 我们在类中定义了三个公共函数来操作链表: - insert():在链表末尾插入一个新节点。 - remove():删除第一个值为val的节点。 - display():遍历链表并输出节点值。 在main函数中,我们创建了一个链表对象list,并调用insert()函数向其中添加四个节点。然后我们调用display()函数输出链表中的所有节点值,再调用remove()函数删除值为3的节点,最后再次调用display()函数检查删除操作是否成功。 以上就是一个简单的C++链表的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CCC_bi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值