c++链表
时间: 2023-06-28 08:09:48 浏览: 109
C++实现链表
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++链表的实现。
阅读全文