数据结构

数据结构与算法(作业四)

吃可爱长大的小学妹 提交于 2020-03-01 19:21:19
最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 运算代码如下: class Solution { public : int maxSubArray ( vector < int > & nums ) { if ( nums . size ( ) == 0 ) return NULL ; int max = nums [ 0 ] ; int sum = 0 ; for ( int i = 0 ; i < nums . size ( ) ; i ++ ) { sum = 0 ; for ( int j = i ; j < nums . size ( ) ; j ++ ) { sum + = nums [ j ] ; if ( sum > max ) max = sum ; } } return max ; } } ; 此代码首先判断了数组是否是空的,这个要不要随你了。然后定义max是用来存储最大值的,sum是用来求和的。首先循环数组长度次数的i,在i里面再次循环数组长度次数的j,目的是用来找出最大的和,所以做一下简单的判断,一直不断的找出最大的和,最终返回即可。 像这样的暴力做法,运算的确很费时间。 来源: CSDN 作者: 想扣篮的Phineas 链接: https://blog.csdn.net/BryceFei

Python----数据结构----栈

ぐ巨炮叔叔 提交于 2020-03-01 19:11:19
Python学习之路,点击有全套Python笔记 栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。 由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。 实现 栈可以用顺序表实现,也可以用链表实现。 步骤: Stack() 创建一个新的空栈 push(item) 添加一个新的元素item到栈顶 pop() 弹出栈顶元素 peek() 返回栈顶元素 is_empty() 判断栈是否为空 size() 返回栈的元素个数 class Stack : """栈""" def __init__ ( self ) : self . __list = [ ] def push ( self , item ) : # 添加一个新的元素item到栈顶 self . __list . append ( item ) def pop ( self ) : # 弹出栈顶元素 return self . __list . pop ( ) def peek ( self ) : #

三十五、Python之数据库基础PyMysql

若如初见. 提交于 2020-03-01 10:39:23
数据库概述 数据存储阶段 【1】 人工管理阶段 缺点 : 数据无法共享,不能单独保持,数据存储量有限 【2】 文件管理阶段 (.txt .doc .xls) 优点 : 数据可以长期保存,可以存储大量的数据,使用简单 缺点 : 数据一致性差,数据查找修改不方便,数据冗余度可能比较大 【3】数据库管理阶段 优点 : 数据组织结构化降低了冗余度,提高了增删改查的效率,容易扩展,方便程序调用,做自动化处理 缺点 :需要使用sql 或者 其他特定的语句,相对比较复杂 数据库应用 融机构、游戏网站、购物网站、论坛网站 ... ... 基础概念 数据 : 能够输入到计算机中并被识别处理的信息集合 数据结构 :研究一个数据集合中数据之间关系的 数据库 : 按照数据结构,存储管理数据的仓库。数据库是在数据库管理系统管理和控制下,在一定介质上的数据集合。 数据库管理系统 :管理数据库的软件,用于建立和维护数据库 数据库系统 : 由数据库和数据库管理系统,开发工具等组成的集合 数据库分类和常见数据库 关系型数据库和非关系型数据库 关系型: 采用关系模型(二维表)来组织数据结构的数据库 非关系型: 不采用关系模型组织数据结构的数据库 开源数据库和非开源数据库 开源:MySQL、SQLite、MongoDB 非开源:Oracle、DB2、SQL_Server 常见的关系型数据库 MySQL、Oracle

树—最“有套路”的数据结构

ぃ、小莉子 提交于 2020-03-01 09:41:13
前言 标题用“有套路”来形容一种数据结构,似乎有点不尊重的意思。不过,我倒是觉得,一种实用的学科,就是应该产生一点套路,这才能发挥体系化研究的优势,套路就是一种保证: 在不投入更多创造性与努力的情况下,依旧能获得比起随意进行相关操作更好的结果 。一门成熟的学科都应如是,如果研究许久,在学科所研究的许多问题的实践上还不如一些“天赋”“灵感”,那就不得不说这门学科的“伪科学”或者“水分”还是蛮大的了。 言归正传,这篇文章将会是一系列寻找算法与数据结构的文章的开篇,树由于其特性,是递归、分治等等重要算法思想的典型载体,同时套路性较强又具有一定规律和难度,上手后,也可以获得总结其他算法“套路”的必要经验。作为一个训练的开头,还是很合适了。 树的定义与理解 先简要谈谈树的抽象定义:树本质上是一种无向图( 图:由顶点与路径构成的数据结构 ),其中,任意两个顶点之间 有且只有一条 路径。简而言之,树是一种具有特殊性质的图。 树的结构非常直观,而且树的大多数结构具有一个重要性质: 递归 。主要来说,就是树具有某一性质时,往往其子树也具有同样的性质。比如说,一个树如果是二叉搜索树,其子树也必须是二叉搜索树。 根据这样的性质,遇到树的问题,很自然会考虑如何合理使用递归算法,其实质就是:分解为子问题,最后解决基本情况,把复杂的递归过程交给计算机来处理。所以,树类型代码的特点就是简洁(不过换句话说

wpa_supplicant代码初探收藏

≡放荡痞女 提交于 2020-03-01 09:31:07
wpa_supplicant代码初探收藏 这几天在尝试把wpa_supplicant移植到windows ce上,替换微软的WZC。先把源代码down下来,了解了一下大致的结构。 wpa_supplicant运行的整个 核心就是 eloop_run 函数 。这个函数负责处理应用程序的请求和数据链路层发来的EAPOL数据。eloop的针对不同的平台有好几个实现版本,我这里只讨论针对WIN32的eloop_win.c版本。 外部需要通过调用eloop_register_event或者eloop_register_read_sock来注册一个回调函数,并绑定了一个相应的事件。eloop会等待每一个事件的发生,并在事件发生时调用相应的回调函数进行处理。 所有与平台相关的网络驱动程序接口,都被通过wpa_driver_ops结构抽象成统一的接口,不管你是WEXT或者NDIS。因此也实现了平台无关性。 此外,wpa_supplicant与应用层通信的方式多种多样,有pipe、socket,你也可以实现自己的方式。只需要实现几个基本的函数就可以了: wpa_supplicant_global_ctrl_iface_init wpa_supplicant_global_ctrl_iface_deinit wpa_supplicant_ctrl_iface_init wpa_supplicant

wpa_supplicant 初始化流程分析

随声附和 提交于 2020-03-01 08:50:48
1. 启动命令 wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下: wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/wpa_supplicant.conf -f/data/wifi/wpa_log.txt wpa_supplicant对于启动命令带的参数,用了两个数据结构来保存, 一个是 wpa_params, 另一个是wpa_interface. 这主要是考虑到wpa_supplicant是可以同时支持多个网络接口的。 wpa_params数据结构主要记录与网络接口无关的一些参数设置。 而每一个网络接口就用一个wpa_interface数据结构来记录。 在启动命令行中,可以用-N来指定将要描述一个新的网络接口,对于一个新的网络接口,可以用下面六个参数描述: -i<ifname> : 网络接口名称 -c<conf>: 配置文件名称 -C<ctrl_intf>: 控制接口名称 -D<driver>: 驱动类型 -p<driver_param>: 驱动参数 -b<br_ifname>: 桥接口名称 2. wpa_supplicant 初始化流程 2.1. main()函数: 在这个函数中,主要做了四件事。 a. 解析命令行传进的参数。 b. 调用wpa

python变量与数据结构

孤者浪人 提交于 2020-03-01 08:49:05
文章目录 python的IDLE常用快捷键 python注释 python编码规范 python变量 python字符串编码 python类型转化 python数据结构 list tuple dict set python深拷贝与浅拷贝 python的IDLE常用快捷键 F1 打开 Python 帮助文档 Python文件窗口和Shell 均可用 Alt + P 浏览历史命令(上一条) 仅 Python Shell 窗口可用 Alt + N 浏览历史命令(下一条) 仅 Python Shell 窗口可用 Alt + / 自动补全前面曾经出现过的单词,如果之前有多个单词具有相同前缀,可以连续按下该快捷键,在多个单词中间循环选择 Python 文件窗口和 Shell 窗口均可用 Alt + 3 注释代码块 仅 Python 文件窗口可用 Alt + 4 取消代码块注释 仅 Python 文件窗口可用 Alt + g 转到某一行 仅 Python 文件窗口可用 Ctrl + Z 撤销一步操作 Python 文件窗口和 Shell 窗口均可用 Ctrl + Shift + Z 恢复上—次的撤销操作 Python 文件窗口和 Shell 窗口均可用 Ctrl + S 保存文件 Python 文件窗口和 Shell 窗口均可用 Ctrl + ] 缩进代码块 仅 Python 文件窗口可用

Python面试——数据结构

元气小坏坏 提交于 2020-03-01 08:23:12
1、Python中内置的4种数据结构: 列表list、元组tuple、字典dict、集合set 2、python中6种基础的数据类型包括:   1 Number(数字)   2 String(字符串)   3 List(列表)   4 Tuple(元组)   5 set(集合)   6 Pictionary(字典) 按照可变数据和不可变数据来区分:   不可变数据(3个):Number(数字),String(字符串),Tuple(元组)   可变数据(3个):List(列表),Dictonary(字典),set(集合) 创建方式:   创建列表: listT=[1,2,3,4,5]   创建元组:tup2=(1,2,3,4,5)   创建字典:dict2={"abc":123,"def":789}   创建集合:student={'Tom','Jim','Mary'} 列表:列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)【插入数据可重复,数据不唯一】 listT=[1,"2",(3,4,5,6),[7,8,9],{"10":11},{12,13,14}]    #列表可以存储数据类型:数字,字符,元组,列表,字典,set print listT #得:[1, '2', (3, 4, 5, 6), [7, 8, 9], {'10': 11}, set(

数据结构28:广义表及M元多项式

Deadly 提交于 2020-03-01 07:41:59
广义表,又称为列表。记作: LS = (a 1 ,a 2 ,…,a n ) ;( LS 为广义表的名称, a n 表示广义表中的数据)。 广义表可以看作是线性表的推广。两者区别是:线性表中的数据元素只能表示单个数据元素;广义表中的单个数据元素 a i ,既可以是单个元素,也可以是广义表。 原子和子表 在广义表中,单个元素被称为 “原子”;包含的广义表被称为 “子表”。 例如: A = () :A 表示一个广义表,只不过表是空的,广义表 A 的长度为 0。 B = (e) :广义表 B 中只有一个原子 e ,长度为 1。 C = (a,(b,c,d)) :广义表 C 中有两个元素,原子 a 和子表 (b,c,d) ,广义表C的长度为 2。 D = (A,B,C) :广义表 D 中有三个元素:子表 A、B、C,长度为 3 ,这种表示方式等同于: D = ((),(e),(b,c,d)) 。 E = (a,E) :广义表 E 中有两个元素,原子 a 和它本身,长度为 2 。这是一个递归的表,等同于:E = (a,(a,(a,…)))。 A = () 和 A = (()) 是不一样的:前者是空表,长度为 0 ;后者表的长度为 1 ,包含的元素是一个子表,只不过这个子表是空表。 表头和表尾 当广义表不为空时,称表中的第一个元素为表的 “表头” ;剩余所有元素组成的表为 “表尾” 。

【C/C++】实现数据结构广义表

末鹿安然 提交于 2020-03-01 07:40:01
1. 广义表的定义 每个元素可以为Atom,原子,也可以为线性表。 线性表的推广。线性表元素有唯一的前驱和后继,为线性表,而广义表是多层次的线性表 表头:第一个元素,可能是原子,可能是广义表 表尾:除了第一个元素,剩余的元素,所构成的广义表 举例: A = (a,b,(c,d),e) head(A) = a tail(A) = (b,(c,d),e) 遍历操作: 取表头,取表尾 ,取表头.. 长度:最外层的元素数,即最外层的','+1 深度:括号层数 2. 广义表的两种存储结构(子表法) 2.1链式存储结构 - 每个数据元素可以用一个节点表示 元素可以为原子或列表 原子节点:标志域、值域 列表节点:标志域、指示表头的指针域、指示表尾的指针域 空表:A = NULL 除了空表,表头指针指向一个表节点,表节点再分表头、表尾... 最高层表节点(可能原子、子表)的个数就是表长度? A = (a,b,(c,d),e) 最高层表头是先a,表尾是(b,(c,d),e),表头是b,表尾((c,d),e)..就是第一层的表尾直到为空之前,有过的表尾指针+1 判断是否在同一层次? 是这样的: 最高层处于同一层,后继的tail指针指向的是同一层,否则,head指针,或者表头是Atom,都是下一层。 2.2扩展线性表存储结构 不是用表头表尾指针了,而是,每一个节点,不管是子表还是原子