数据结构与算法单项链表代码C++
时间: 2023-11-14 19:09:03 浏览: 115
数据结构单双链表c++版
单向链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。单向链表的实现可以使用C++语言来完成。以下是一个简单的单向链表的代码示例:
```c++
#include <iostream>
using namespace std;
// 定义链表节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
// 定义链表类
class LinkedList {
public:
LinkedList() {
head = NULL;
}
// 在链表头部插入节点
void insertAtHead(int val) {
ListNode* newNode = new ListNode(val); newNode->next = head;
head = newNode;
}
// 在链表尾部插入节点
void insertAtTail(int val) {
ListNode* newNode = new ListNode(val);
if (head == NULL) {
head = newNode;
} else {
ListNode* cur = head;
while (cur->next != NULL) {
cur = cur->next;
}
cur->next = newNode;
}
}
// 删除链表中第一个值为val的节点
void deleteNode(int val) {
if (head == NULL) {
return;
}
if (head->val == val) {
ListNode* temp = head;
head = head->next;
delete temp;
return;
}
ListNode* cur = head;
while (cur->next != NULL && cur->next->val != val) {
cur = cur->next;
}
if (cur->next != NULL) {
ListNode* temp = cur->next;
cur->next = cur->next->next;
delete temp;
}
}
// 遍历链表并输出每个节点的值
void printList() {
ListNode* cur = head;
while (cur != NULL) {
cout << cur->val << " ";
cur = cur->next;
}
cout << endl;
}
private:
ListNode* head;
};
// 测试代码
int main() {
LinkedList list;
list.insertAtHead(1);
list.insertAtHead(2);
list.insertAtTail(3);
list.insertAtTail(4);
list.printList();
list.deleteNode(2);
list.printList();
return 0;
}
```
阅读全文