单链表的基本操作c++
时间: 2023-08-10 18:06:11 浏览: 46
单链表是一种常见的数据结构,它由多个节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。以下是单链表的基本操作:
1. 创建链表:定义一个节点结构体,包含数据域和指针域,通过动态内存分配,不断创建新节点,并将它们按照一定的顺序链接在一起,形成链表。
2. 插入节点:在指定位置插入一个新节点,需要先找到插入位置的前驱节点,然后将新节点插入到前驱节点的后面。
3. 删除节点:删除指定位置的节点,需要先找到待删除节点的前驱节点,然后将前驱节点的指针指向待删除节点的后继节点,最后释放待删除节点的内存空间。
4. 查找元素:从链表的头节点开始,依次遍历每个节点,查找指定的元素是否存在。
5. 遍历链表:从链表的头节点开始,依次遍历每个节点,对每个节点进行操作。
下面是单链表的基本操作的 C++ 代码实现:
```c++
//定义节点结构体
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
//创建链表
ListNode* createList(vector<int> nums) {
ListNode *head = new ListNode(0);
ListNode *p = head;
for (int i = 0; i < nums.size(); i++) {
ListNode *node = new ListNode(nums[i]);
p->next = node;
p = p->next;
}
return head->next;
}
//插入节点
void insertNode(ListNode *head, int pos, int val) {
ListNode *p = head;
for (int i = 0; i < pos - 1 && p != NULL; i++) {
p = p->next;
}
if (p == NULL) {
return;
}
ListNode *node = new ListNode(val);
node->next = p->next;
p->next = node;
}
//删除节点
void deleteNode(ListNode *head, int pos) {
ListNode *p = head;
for (int i = 0; i < pos - 1 && p != NULL; i++) {
p = p->next;
}
if (p == NULL || p->next == NULL) {
return;
}
ListNode *temp = p->next;
p->next = temp->next;
delete temp;
}
//查找元素
bool findNode(ListNode *head, int val) {
ListNode *p = head;
while (p != NULL) {
if (p->val == val) {
return true;
}
p = p->next;
}
return false;
}
//遍历链表
void traverseList(ListNode *head) {
ListNode *p = head;
while (p != NULL) {
cout << p->val << " ";
p = p->next;
}
}
```
以上是单链表的基本操作的 C++ 实现,可以根据需要进行调用和修改。