单链表的基本操作c++
时间: 2023-08-10 20:06:08 浏览: 99
单链表是一种常见的数据结构,它由若干个节点组成,每个节点包含数据域和指向下一个节点的指针域。以下是单链表的基本操作 C++ 实现:
定义节点结构体:
```
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
```
1. 头插法创建单链表
```
ListNode* createListHead(vector<int>& nums) {
ListNode *head = new ListNode(0);
for (int i = 0; i < nums.size(); i++) {
ListNode *node = new ListNode(nums[i]);
node->next = head->next;
head->next = node;
}
return head->next;
}
```
2. 尾插法创建单链表
```
ListNode* createListTail(vector<int>& nums) {
ListNode *head = new ListNode(0);
ListNode *tail = head;
for (int i = 0; i < nums.size(); i++) {
ListNode *node = new ListNode(nums[i]);
tail->next = node;
tail = tail->next;
}
return head->next;
}
```
3. 遍历单链表
```
void traverseList(ListNode *head) {
while (head) {
cout << head->val << " ";
head = head->next;
}
cout << endl;
}
```
4. 插入节点
```
void insertNode(ListNode *head, int pos, int val) {
ListNode *prev = head;
for (int i = 0; i < pos - 1; i++) {
prev = prev->next;
}
ListNode *node = new ListNode(val);
node->next = prev->next;
prev->next = node;
}
```
5. 删除节点
```
void deleteNode(ListNode *head, int pos) {
ListNode *prev = head;
for (int i = 0; i < pos - 1; i++) {
prev = prev->next;
}
ListNode *temp = prev->next;
prev->next = prev->next->next;
delete temp;
}
```
以上是单链表的基本操作 C++ 实现,可以根据需要进行修改和扩展。
阅读全文