文章 44
浏览 11238
数据结构:线性表(番外)

数据结构:线性表(番外)

静态链表: 有时可以借助一维数组来表示线性链表 //------线性表的静态单链表存储结构------- #define MAXSIZE 1000 typedef struct { ElemType data; int cur; }component,Slinklist[MAXSIZE] 数组的一个分量表示一个结点,同时用游标(cur)代替指针指示结点在数组中的位置。在线性表的删除和插入操作时不需要移动元素,仅需要修改游标。 多项式计算: 简单的我们可以想到,用一维数组表示一个多项式,用数组的下标表示多项式中每一项的指数,用数组中每个位置上的值表示对应的系数。 但是这样存在一个问题:形如S(x) = 1 + 3x10000 – 2x20000这样的多项式,指数项的值非常大,但非零项却非常少,导致一维数组浪费的空间很大。 为此我们可以用单链表来实现。在单链表中每个结点有两个数据项(系数项和指数项)。 typedef struct { // 项的表示 float coef; // 系数 int expn; // 指数 } term, ElemType; //多项式相加 void Add....

数据结构:线性表(2)

数据结构:线性表(2)

顺序存储: 以元素在计算机内的“物理位置”相邻来表示线性表中的数据元素的逻辑关系。 并以表中第一个元素的存储位置作为线性表的基地址。 LOC(ai ) = LOC(ai-1 ) + C LOC(ai ) = LOC(a1 ) + (i-1)×C 线性表顺序存储结构的特点 1.逻辑上相邻的元素,其物理位置也相邻; 2.可随机存取表中任一元素; 3.必须按最大可能长度预分存储空间,存储空间利用率低,表的容量难以扩充,是一种静态存储结构; 4.插入删除时,需移动大量元素,平均移动元素为n/2。 操作: 插入: Status listinsert (List &L,int i,ElenType e) { if (i<1||i>L.lenght) return error; if (L.lenght>=L.maxsize) { newbase=(ElemType*)realloc(sizeof(maxsize+newsize)*sizeof(ElemType)); if (!newbase) exit(1); L.elem=newbase; L.maxsixe+=n....

数据结构:线性表(1)

数据结构:线性表(1)

线性结构特点: 1.存在唯一的第一个“数据元素”。 2.存在唯一的最后一个“数据元素”。 3.除第一个元素外,集合中元素存在唯一后继,除最后一个元素外,集合中元素存在唯一前驱。 线性表: 1.一个线性表是n个数据结构的有序集合 2.线性表中数据元素的个数称为线性表的个数,n=0时称为空表 线性表基本操作: 结构初始化 InitList(*L) 操作结果:构造一个空的线性表 L 销毁结构 DestroyList(*L) 初始条件:线性表 L 已存在 操作结果:销毁线性表 L PriorElem( L, cur_e, *pre_e ) 初始条件:线性表 L 已存在 操作结果:若 cur_e 是 L 中的数据元素,则用 pre_e 返回它的前驱,否则操作失败,pre_e 无定义 NextElem( L, cur_e, *next_e ) 初始条件:线性表 L 已存在 操作结果:若 cur_e 是 L 中的数据元素,则用 next_e 返回它的后继,否则操作失败,next_e 无定义 ListEmpty( L ) 初始条件:线性表L已存在 操作结果:若 L 为空表,则返回 TRUE,否则返回 ....

数据结构:基础部分

数据结构:基础部分

算法: 算法是规则的有限集合,是为了解决特定问题的方法 特性: 1.有穷性、2.确定性、3.可行性、4.零或多个输入、5.一或多个输出 设计要求: 1.正确、2.可读、3.健硕、4.效率与空间 算法效率的度量: 算法中基本操作重复执行的次数记作:T(n)=O(f(n)),称为时间复杂度 一般来说他是最深层循环语句的执行次数的近似。 例如: for (i=2;i<=n;i++) { for (j=2;j<=i-1;i++) { x++; } } x++;这条语句的频度表达式为(n-1)(n-2)/2,所以该代码块的时间复杂度为O(n*n) 例外: 有些问题中,基本语句的重复执行次数还与问题的输入有关,这种情况下,一种方法是计算时间复杂度的平均值,另一种更常用的方法是讨论算法在最坏情况下的时间复杂度。

2018年——全国行政区划代码

2018年——全国行政区划代码

在进行一项基于爬虫的项目开发过程中,需要对行政区划代码进行匹配,如果是精确到省级单位还好处理,但如果是精确到市级单位或者更下一级,就不能单纯手写字典去匹配了。 一开始我采取的是爬取一个第三方网站:https://xingzhengquhua.51240.com/ 这个网站的设计比较简单,查询时的速率比较快。 下面放上爬取这个网站的代码 import requests from lxml import etree http_later="00000000__xingzhengquhua/" http_former="https://xingzhengquhua.51240.com/" city_num='2100' website=http_former+city_num+http_later html=requests.get(website).text htmls=etree.HTML(html) tip=htmls.xpath('//*[@id="main_content"]/table/tr/td/table/tr[1]/td/a[last()]') print(tip[0].....

百度竞价排名小工具😜

百度竞价排名小工具😜

众所周知百度盈利的一个很重要的途径是广告的竞价排名 商家想要向受众推销自己的产品,可以借助百度这样一个平台,但百度的竞价排名并不是一成不变的,商家想要实时观察百度对自己产品的推广情况,我作为爬虫技术的入门者,课外时间和自己的同学开发了这样的一个小工具。 该工具借助python的requests库以及lxml解析库实现主要功能,通过tkinter库实现图像界面,threading库实现多线程。同时显示多条排名。其余还有json库用于处理网页信息。 首先确定我们需要的信息:投放广告公司的名称和网址。 公司名称隐含在V3的标签里 然后使用浏览器F12的开发者工具,定位元素的HTML代码。 但尝试了几次后发现,元素的class似乎是一个随机的字符串,每次刷新后,class都会发生改变。 但山重水复疑无路柳岸花明又一广告,通过定位每条广告右下角浅蓝色的小广告,发现虽然这个元素的class每次也都不同, 但是他们有一个特点:font标签的class属性不管前半部分是什么字符,后半部分都为:ec_tuiguang_container,于是便对边标签class属性进行模糊匹配。 定位到广告后....

Iverilog & GTKWave

Iverilog & GTKWave

一直都因为太过懒惰,没有更新网站的文章。 正好最近学校小学期的任务是,进行VerilogHDL语言的学习,需要安装可以编译该语言的软件,课上学习使用的vivado,当时学的时候就是云里雾里,现在需要用到了,打算在自己的电脑上安装一个,看到软件大小10.4G,果断放弃。 一顿搜索引擎,发现大家与我意见一致,vivado对我们来说确实是屠龙刀了。 更好的选择是 Iverilog 加上 GTKWave 直接从Icarus Verilog for Windows下载安装即可,这里提供的为Windows版 Icarus Verilog中已经包含了GTKWave,不必再额外下载 注意安装时是默认全部安装,不要自作聪明自定义,反而弄巧成拙 安装时最后有一步,可以自动将其需要用到的路径,加入自动变量,建议设置 安装之后就可以编辑一个verilog文件了 /***** ** 文件名称:hello_world_tb.v ** 功能描述:一个iverilog和GTKWave使用方式介绍的hello world例子 *****/ // synopsys translate_off `timescale 1....

谱聚类初探

谱聚类初探

本学期初参加了我校的一个大学生科技活动。 导师甩给我的课题是:“谱聚类算法”,我自己选择的应用方向是“图像分割”。 在网上大量浏览相关帖子后,终于对该算法有了一个大概的掌握。 https://www.cnblogs.com/pinard/p/6221564.html 个人觉得上面这篇博客对算法总体的阐述比较好。 可以作为了解该算法的一篇入门文章。 所谓聚类,如名字一样,就是将杂乱无章的数据,按照彼此之间的相似度,分为几类。其中大量使用了矩阵变换的知识。 输入: 样本集D=(x1,x2,...,xn)(x1,x2,...,xn)。 我是直接从.mat文件读取数据,也可以用matplotlib.pyplot库的imread函数读取普通图片。 写作: import matplotlib.pyplot as plt pic = plt.imread('one.png') 输出: 簇划分C(c1,c2,...ck2)C(c1,c2,...ck2). 再使用 plt.show() 便可以将图像显示出来。 算法如下: 根据输入的相似矩阵的生成方式构建样本的相似矩阵S(网上好多帖子都提示使用“高....

报数游戏

报数游戏

线性表实验

Python Selenium秒杀脚本小试牛刀

Python Selenium秒杀脚本小试牛刀

初次尝试写一个秒杀脚本是在2018.11月即将迎来双十一的时候,但由于当时没有深入探讨,所以最后不了了之,现在正值假期,我闲来无事,所以打算将这个功能完善一下。 最近传出消息,美团、淘宝加强对selemium自动化测试软件的封杀,加之个人经验,这个脚本平时使用还好,但如果真的在双十一这样的高峰购物时间点会无法使用,因为平台会出现对下单商品,加以二维码的检测,而在没有模型训练的前提下,很难突破二维码的限制< 1.首先最开始的部分,会看起来有些傻,因为是用selenium拉起浏览器,所以浏览器内部不会保存你的登录cookie,而淘宝登录的cookie是以近10几位字段进行加密的密文,导致如果我们自己想用POST的方式的登录也不可能。所以只能在秒杀开始之前用手机扫码登录,做好准备。😑 2.登录成功后,get方式跳转 "https://cart.taobao.com/cart.htm"(即进入购物车进行准备) 3.外加while死循环,内部加以if判断,用datetime库的datetime.now()函数获取当前时间,返回的是一个字符串 4.对字符串进行比较,如果等于则规定时间则....