数据结构 详解(C++)
目录
数据结构
1.线性结构(不止四个):
写法:
2.非线性(不止这些)
写法:
数据结构
1.线性结构(不止四个):
栈、队列、一维数组、vector……
写法:
栈:
s.empty(); //如果栈为空则返回true, 否则返回false;
s.size(); //返回栈中元素的个数
s.top(); //返回栈顶元素, 但不删除该元素
s.pop(); //弹出栈顶元素, 但不返回其值
s.push(); //将元素压入栈顶
#include <stack>//栈的头文件
#include <iostream>
using namespace std;int main()
{stack<int> mystack;//栈的变量定义int sum = 0;for (int i = 0; i <= 10; i++){mystack.push(i);}cout << "size is " << mystack.size() << endl;while (!mystack.empty()){cout << " " << mystack.top();mystack.pop();}cout << endl;system("pause");return 0;
}
//size is 11
// 10 9 8 7 6 5 4 3 2 1 0
队列:
q.empty() 如果队列为空返回true,否则返回false
q.size() 返回队列中元素的个数
q.pop() 删除队列首元素但不返回其值
q.front() 返回队首元素的值,但不删除该元素
q.push() 在队尾压入新元素
q.back() 返回队列尾元素的值,但不删除该元素
#include <queue>//队列头文件
#include <iostream>
using namespace std;int main(){queue<int> q;for (int i = 0; i < 10; i++){q.push(i);}if (!q.empty()){cout << "队列q非空!" << endl;cout << "q中有" << q.size() << "个元素" << endl;}cout << "队头元素为:" << q.front() << endl;cout << "队尾元素为:" << q.back() << endl;for (int j = 0; j < 10; j++){int tmp = q.front();cout << tmp << " ";q.pop();}cout << endl;if (!q.empty()){cout << "队列非空!" << endl;}system("pause");return 0;
}
一维数组(太多,不想写):
详解见:https://blog.csdn.net/qiancm/article/details/118704372
vector:
vector<int> v1;
vector<father> v2;
vector<string> v3;
vector<vector<int> >; //注意空格。这里相当于二维数组int a[n][n];
vector<int> v5 = { 1,2,3,4,5 }; //列表初始化,注意使用的是花括号
vector<string> v6 = { "hi","my","name","is","lee" };
vector<int> v7(5, -1); //初始化为-1,-1,-1,-1,-1。第一个参数是数目,第二个参数是要初始化的值
vector<string> v8(3, "hi");
vector<int> v9(10); //默认初始化为0
vector<int> v10(4); //默认初始化为空字符串
详解见:https://blog.csdn.net/qiancm/article/details/119611928
2.非线性(不止这些)
二维(多维)数组、树、图……
写法:
二维数组:
#include <cstdio>
int main(){int i, j; //二维数组下标int sum = 0; //当前科目的总成绩int average; //总平均分int v[3]; //各科平均分int a[5][3]; //用来保存每个同学各科成绩的二维数组printf("Input score:\n");for(i=0; i<3; i++){for(j=0; j<5; j++){scanf("%d", &a[j][i]); //输入每个同学的各科成绩sum += a[j][i]; //计算当前科目的总成绩}v[i]=sum/5; // 当前科目的平均分sum=0;}average = (v[0] + v[1] + v[2]) / 3;printf("Math: %d\nC Languag: %d\nEnglish: %d\n", v[0], v[1], v[2]);printf("Total: %d\n", average);return 0;
}
三维数组:
#include <bits/stdc++.h>
using namespace std;
int main() {
int array[3][2][2] = {0,1,2,3,4,5,6,7};printf("%d %d %d %d\n",&array[0],&array[0][0],&array[0][0][0],&array);//地址和值都是一样的//下面的四行代码相当于立方体的第一层printf("%d ",array[0][0][0]);printf("%d ",array[0][0][1]);printf("%d ",array[0][1][0]);printf("%d\n",array[0][1][1]);//下面的四行代码相当于立方体的第二层printf("%d ",array[1][0][0]);printf("%d ",array[1][0][1]);printf("%d ",array[1][1][0]);printf("%d\n",array[1][1][1]);//下面的立方体相当于第三层printf("%d ",array[2][0][0]);printf("%d ",array[2][0][1]);printf("%d ",array[2][1][0]);printf("%d\n",array[2][1][1]);return 0;
}
多维(目前还无法理解)╮(╯▽╰)╭
树(太多,不想写):
详见:https://blog.csdn.net/qiancm/article/details/118480436
图(也好多,不想写):
详见:https://blog.csdn.net/qiancm/article/details/119612514
数据结构 详解(C++)相关推荐
- 万字长文的Redis五种数据结构详解(理论+实战),建议收藏。
本文脑图 前言 Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库.缓存.消息中间件,这么优秀的东西一定要一点一点的吃透它. 关于Redis的文章之前也写过三篇,阅读量和读者的反映都还 ...
- redis数据结构详解之Hash(四)
原文:redis数据结构详解之Hash(四) 序言 Hash数据结构累似c#中的dictionary,大家对数组应该比较了解,数组是通过索引快速定位到指定元素的,无论是访问数组的第一个元素还是最后一个 ...
- Python中的高级数据结构详解
这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...
- [转]Redis内部数据结构详解-sds
本文是<Redis内部数据结构详解>系列的第二篇,讲述Redis中使用最多的一个基础数据结构:sds. 不管在哪门编程语言当中,字符串都几乎是使用最多的数据结构.sds正是在Redis中被 ...
- Redis数据结构详解之Zset(五)
原文:Redis数据结构详解之Zset(五) 序言 Zset跟Set之间可以有并集运算,因为他们存储的数据字符串集合,不能有一样的成员出现在一个zset中,但是为什么有了set还要有zset呢?zse ...
- 【肝帝一周总结:全网最全最细】☀️Mysql 索引数据结构详解与索引优化☀️《❤️记得收藏❤️》
[肝帝一周总结:全网最全最细]☀️Mysql 索引数据结构详解与索引优化☀️<❤️记得收藏❤️> 目录
- [redis] 10 种数据结构详解
[redis] 10 种数据结构详解 简介 5种常见数据结构 string: 最常见的 string key value list: 双向链表 set: 集合- zset: 有序集合 hash: 类似 ...
- 数据结构详解——最大(小)左倾树
数据结构详解--最大(小)左倾树 文章目录 数据结构详解--最大(小)左倾树 最大(小)左倾树的定义及用途 操作最大HBLT 合并操作 插入操作和删除操作 初始化操作 Java语言实现的最大HBLT ...
- 探索Redis设计与实现6:Redis内部数据结构详解——skiplist
Redis内部数据结构详解(6)--skiplist 2016-10-05 本文是<Redis内部数据结构详解>系列的第六篇.在本文中,我们围绕一个Redis的内部数据结构--skipl ...
- Redis底层数据结构详解
Redis底层数据结构详解 我们知道Redis常用的数据结构有五种,String.List.Hash.Set.ZSet,其他的集中数据结构基本上也是用这五种实现的,那么,这五种是Redis提供给你的数 ...
最新文章
- mac 配置apache 服务器 实现手机pc 端局域网传输
- matlab工作区保留或者清除部分变量
- 二级联动菜单(javascript)
- boost::xtime相关的测试程序
- 通过internet在计算机之间以用户名,第7_8章_计算机网络和Internet应用.doc
- 用Python爬取Bilibili上二次元妹子的视频
- 在linux命令下导出导入.sql文件的方法
- 27代理模式(Proxy Pattern)
- php util.js,javascript中一些util方法汇总_javascript技巧
- 复选框与文字无法对齐问题
- Servlet和JSP学习指南
- 微信小程序、小游戏反编译获取源码
- C语言之编程规范及细节知识(学C必看)
- 解决Windows密码错误无法进入系统的问题
- Java项目:自习室图书馆座位预约管理系统(java+SSM+JSP+easyUI+mysql)
- 鼠标放上去会变色的按钮
- 提高下载微软产品的速度(改host)
- CORBA的简单介绍及HelloWorld
- 怎样屏蔽百度搜索侧边栏推荐以及热搜榜广告
- Flutter 实现原理及跨平台实践
热门文章
- 跟我一起学docker(14)--docker swarm的使用
- 比特币创业公司Circle首获数字货币许可证
- 电脑管理器地址栏 按右键会有的功能
- Picasso通过URL获取--用户头像的圆形显示
- backbond Model实现
- 环境配置就是安装软件,修改软件的配置文件,安装软件就是文件的复制,与新增--linux下一切皆文件...
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 为七牛云存储开发的PHP PEAR 包:Services_Qiniu
- SCSI和RAID控制器
- 美图个性化推荐的实践与探索