cpp如何使用结构写单链表链表
时间: 2024-11-13 22:28:01 浏览: 13
单链表链表
在 C++ 中,我们可以使用结构体(struct 或 class)定义一个节点,并通过指针实现单链表。以下是创建一个简单的单链表的基本步骤:
首先,我们定义一个节点结构,包含数据和指向下一个节点的指针:
```cpp
// 定义节点结构
struct ListNode {
int data; // 数据域
ListNode* next; // 指向下一个节点的指针
ListNode(int val) : data(val), next(nullptr) {} // 构造函数,初始化数据和next为nullptr
};
```
接下来,创建链表相关的功能:
1. 创建链表头结点:
```cpp
ListNode* createList() {
return new ListNode(0); // 创建一个空链表,头结点值为0
}
```
2. 插入元素到链表:
```cpp
void insertNode(ListNode*& head, int val) {
ListNode* newNode = new ListNode(val);
if (head == nullptr) { // 如果链表为空,直接将新节点设为头结点
head = newNode;
} else {
ListNode* current = head;
while (current->next != nullptr) {
current = current->next;
}
current->next = newNode; // 将新节点添加到链表末尾
}
}
```
3. 遍历链表打印元素:
```cpp
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != nullptr) {
std::cout << temp->data << " ";
temp = temp->next;
}
std::cout << "\n";
}
```
4. 删除链表元素(这里仅给出基本示例,实际操作需要考虑复杂情况如删除特定位置的节点):
```cpp
void deleteNode(ListNode*& head, int target) {
if (head == nullptr) {
return;
}
if (head->data == target) {
ListNode* temp = head;
head = head->next;
delete temp;
return;
}
ListNode* current = head;
while (current->next != nullptr && current->next->data != target) {
current = current->next;
}
if (current->next != nullptr) {
ListNode* toDelete = current->next;
current->next = current->next->next;
delete toDelete;
}
}
```
阅读全文