【C++】数据结构

数组

int array[5]={1,2,3,4,5}
array[1] = 3

容器

C++ vector 容器浅析 | 菜鸟教程 (runoob.com)

vector<类型> obj(大小,值);
1.push_back 在数组的最后添加一个数据

2.pop_back 去掉数组的最后一个数据

3.at 得到编号位置的数据

4.begin 得到数组头的指针

5.end 得到数组的最后一个单元+1的指针

6.front 得到数组头的引用

7.back 得到数组的最后一个单元的引用

8.max_size 得到vector最大可以是多大

9.capacity 当前vector分配的大小

10.size 当前使用数据的大小

11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值

12.reserve 改变当前vecotr所分配空间的大小

13.erase 删除指针指向的数据项

14.clear 清空当前的vector

15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)

16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)

17.empty 判断vector是否为空

18.swap 与另一个vector交换数据

    //方法一 
    for(int i=0;i<10;i++)
    {
        cout<<obj[i]<<" ";
    }
 
    cout<<endl; 
    
    //方法二,使用迭代器将容器中数据输出 
    vector<int>::iterator it;//声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素 
    for(it=obj.begin();it!=obj.end();it++)
    {
        cout<<*it<<" ";
    }
   

链表

#include "pch.h"
#include <iostream> 
using namespace std;
int main(void) {
	struct ListNode
	{
		double value;
		ListNode *next;
		//构造函数
		ListNode(double valuel, ListNode *nextl = nullptr)
		{
			value = valuel;
			next = nextl;
		}
	};
	
	ListNode *thirdPtr = new ListNode(13.5);
	ListNode *secondPtr = new ListNode(13.5,thirdPtr);
	ListNode *head = new ListNode(12.5, secondPtr);
	ListNode *ptr = head;
	while (ptr != nullptr) {
		cout << ptr << " ";
		ptr = ptr->next;
	}
}

stack<int> mystack;
s.empty();         //如果栈为空则返回true, 否则返回false;
s.size();          //返回栈中元素的个数
s.top();           //返回栈顶元素, 但不删除该元素
s.pop();           //弹出栈顶元素, 但不返回其值
s.push();          //将元素压入栈顶

队列

queue<int> q;
q.empty()               //如果队列为空返回true,否则返回false
q.size()                //返回队列中元素的个数
q.pop()                 //删除队列首元素但不返回其值
q.front()               //返回队首元素的值,但不删除该元素
q.push()                //在队尾压入新元素
q.back()                //返回队列尾元素的值,但不删除该元素

遍历

    stack<int> stak;
	for (int i = 1; i < 10; i++) {
		stak.push(i);
	}
	while (!stak.empty()) {
		cout << stak.top() << endl;
		stak.pop();
	}
	queue<int> que;
	for (int i = 1; i < 10; i++) {
		que.push(i);
	}
	while (!que.empty()) {
		cout << que.front() << endl;
		que.pop();
	}

struct TreeNode {
		int val;
		TreeNode *left;
		TreeNode *right;
		TreeNode(int x) : val(x), left(NULL), right(NULL) {}
	};

	TreeNode *n1 = new TreeNode(3); // 根节点 root
	TreeNode *n2 = new TreeNode(4);
	TreeNode *n3 = new TreeNode(5);
	TreeNode *n4 = new TreeNode(1);
	TreeNode *n5 = new TreeNode(2);

	n1->left = n2;
	n1->right = n3;
	n2->left = n4;
	n3->right = n5;

二叉树的遍历:彻底理解二叉树的遍历_码农的荒岛求生-CSDN博客_二叉树遍历

c++单循环实现二叉树的前,中,后序,层次遍历_u014524930的博客-CSDN博客

优先队列

c++优先队列(priority_queue)用法详解_吕白_的博客-CSDN博客_c++优先队列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值