C++ stl中的链表
时间: 2024-01-14 10:19:33 浏览: 29
C++ STL中的链表是双向链表,可以通过list容器来使用。以下是链表的一些基本操作:
1. 创建链表
```c++
#include <list>
using namespace std;
list<int> mylist; // 创建一个空链表
```
2. 在链表末尾添加元素
```c++
mylist.push_back(1); // 在链表末尾添加元素1
```
3. 在链表头部添加元素
```c++
mylist.push_front(2); // 在链表头部添加元素2
```
4. 删除链表末尾的元素
```c++
mylist.pop_back(); // 删除链表末尾的元素
```
5. 删除链表头部的元素
```c++
mylist.pop_front(); // 删除链表头部的元素
```
6. 获取链表的长度
```c++
mylist.size(); // 获取链表的长度
```
7. 遍历链表
```c++
list<int>::iterator it;
for (it = mylist.begin(); it != mylist.end(); ++it) {
cout << *it << endl; // 输出链表中的元素
}
```
相关问题
C++STL链表循环链表
C语言中的标准模板库(STL)是C++的一部分,不适用于C语言。然而,你可以使用C语言来实现链表和循环链表。
在C语言中,你可以通过定义一个结构体来表示链表的节点,每个节点包含一个数据元素和一个指向下一个节点的指针。下面是一个简单的例子:
```c
struct ListNode {
int data;
struct ListNode* next;
};
```
要创建一个循环链表,你需要确保最后一个节点的指针指向第一个节点。这样,遍历链表时就可以通过检查指针是否指向第一个节点来判断是否到达链表的末尾。
下面是一个简单的循环链表的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int data;
struct ListNode* next;
};
void printList(struct ListNode* head) {
struct ListNode* current = head;
if (head == NULL) {
printf("List is empty.\n");
return;
}
do {
printf("%d ", current->data);
current = current->next;
} while (current != head);
printf("\n");
}
int main() {
struct ListNode* head = NULL;
struct ListNode* second = NULL;
struct ListNode* third = NULL;
// 创建三个节点
head = (struct ListNode*)malloc(sizeof(struct ListNode));
second = (struct ListNode*)malloc(sizeof(struct ListNode));
third = (struct ListNode*)malloc(sizeof(struct ListNode));
// 赋值数据
head->data = 1;
second->data = 2;
third->data = 3;
// 构建循环链表
head->next = second;
second->next = third;
third->next = head;
printList(head);
// 释放内存
free(head);
free(second);
free(third);
return 0;
}
```
这个示例代码创建了一个包含3个节点的循环链表,并打印出链表中的元素。注意在释放内存之前,需要对每个节点调用`free`函数进行释放。
希望这个例子对你有所帮助!
c++ STL 链表
STL(Standard Template Library)是C++的标准库之一,其中包含了许多常用的数据结构和算法。对于链表数据结构而言,STL中并没有直接提供链表。不过,STL中提供了其他更为高级和灵活的数据结构,例如vector、list和deque。
在STL中,list就是双向链表的实现。它具有插入和删除元素的高效性,但是访问元素时需要遍历整个链表。另外,list还提供了许多其他操作,如排序、合并、反转等。
使用STL的list,你可以通过包含头文件<list>来引入相应的库,并通过list类来声明和操作链表对象。下面是一个简单的示例代码,展示了如何使用STL的list:
```cpp
#include <iostream>
#include <list>
int main() {
std::list<int> mylist;
mylist.push_back(1);
mylist.push_back(2);
mylist.push_front(3);
std::cout << "List elements: ";
for (auto it = mylist.begin(); it != mylist.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
```
上述代码创建了一个整型链表mylist,并依次在链表尾部插入1和2,在链表头部插入3。然后通过迭代器遍历链表并打印出所有元素。
这只是一个简单的示例,STL的list还有许多其他功能和操作,你可以根据自己的需求进一步探索和使用。