用代码实现以下链表操作:数据结构基础,链表构成,链表建立,清空,初始化,遍历,节点查找,插入,删除
时间: 2023-07-11 15:47:21 浏览: 107
双向链表的各种操作(包括建立,插入,删除,查找等)源代码
5星 · 资源好评率100%
好的,以下是C++实现链表操作的代码:
```c++
#include<iostream>
using namespace std;
// 定义链表节点
struct ListNode{
int val;
ListNode* next;
ListNode(int x): val(x), next(NULL){}
};
// 链表类
class MyLinkedList{
public:
ListNode* head; // 头节点
// 构造函数
MyLinkedList(){
head = new ListNode(0); // 创建头节点
}
// 链表清空
void clear(){
ListNode* curr = head->next;
while(curr != NULL){
ListNode* temp = curr;
curr = curr->next;
delete temp;
}
head->next = NULL;
}
// 链表初始化
void init(){
clear();
head->next = NULL;
}
// 遍历链表
void traverse(){
ListNode* curr = head->next;
while(curr != NULL){
cout << curr->val << " ";
curr = curr->next;
}
cout << endl;
}
// 在链表中查找节点
ListNode* search(int val){
ListNode* curr = head->next;
while(curr != NULL){
if(curr->val == val){
return curr;
}
curr = curr->next;
}
return NULL;
}
// 在链表中插入节点
void insert(int val){
ListNode* node = new ListNode(val);
ListNode* curr = head;
while(curr->next != NULL && curr->next->val < val){
curr = curr->next;
}
node->next = curr->next;
curr->next = node;
}
// 在链表中删除节点
void remove(int val){
ListNode* curr = head;
while(curr->next != NULL){
if(curr->next->val == val){
ListNode* temp = curr->next;
curr->next = curr->next->next;
delete temp;
return;
}
curr = curr->next;
}
}
};
// 测试
int main(){
MyLinkedList myList;
myList.insert(1);
myList.insert(3);
myList.insert(2);
myList.traverse(); // 1 2 3
myList.remove(2);
myList.traverse(); // 1 3
return 0;
}
```
以上代码实现了链表的基本操作,你可以根据需要进行调整和修改。
阅读全文