8k小说 通过搜索各大小说站为您自动抓取各类小说的最快更新供您阅读!
8k小说 >  离语 >   第310章 有毛病!

1、线性表的逻辑结构

线性结构是最常用、最简单的一种数据结构。而线性表是一种典型的线性结构。其基

本特点是线性表中的数据元素是有序且是有限的。在这种结构中:

1 存在一个唯一的被称为“第一个”的数据元素;

2 存在一个唯一的被称为“最后一个”的数据元素;

3 除第一个元素外,每个元素均有唯一一个直接前驱;

4 除最后一个元素外,每个元素均有唯一一个直接后继。

例如: 线性序列 a1,a2, …an 线性表:是由 n(n≧0)个数据元素(结点)a1,a2, …an 组成的有限序列。该序列中的

所有结点具有相同的数据类型。其中数据元素的个数 n 称为线性表的长度。

当 n=0 时,称为空表。

当 n>0 时,将非空的线性表记作: (a1,a2,…an)

a1 称为线性表的第一个(首)结点,an 称为线性表的最后一个(尾)结点。

a1,a2,…ai-1 都是 ai(2≦i≦n)的前驱,其中 ai-1 是 ai 的直接前驱;

ai+1,ai+2,…an 都是 ai(1≦i ≦n-1)的后继,其中 ai+1。

2、顺序表

顺序存储 :把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里。用这

种方法存储的线性表简称顺序表。

有非空的线性表:(a1,a2,…an) 。顺序存储如图所示。

顺序存储的线性表的特点:

◆ 线性表的逻辑顺序与物理顺序一致;

◆ 数据元素之间的关系是以元素在计算机内

“物理位置相邻”来体现。设有非空的线性表:(a1,

a2,…an) 。顺序存储如图所示。

设线性表的每个元素需占用 l 个存储单元,以所

占的第一个单元的存储地址作为数据元素的存储位

置。则线性表中第i+1个数据元素的存储位置Loc(ai+1)

和第 i 个数据元素的存储位置 Loc(ai)之间满足下列关

系: Loc(ai+1)=Loc(ai)+l

线性表的第 i 个数据元素 ai 的存储位置为:数组具有随机存取的特性

Loc(ai)=Loc(a0)+(i)*l

在高级语言(如 c 语言)环境下:数组具有随机存取的特性,因此,借助数组来描述顺序

表。除了用数组来存储线性表的元素之外,顺序表还应该有表示线性表的长度属性,所以用

结构类型来定义顺序表类型。

#define mAxSIZE 100 \/\/数组最大长度

typedef struct { \/\/定义线性表结构体

int data[mAxSIZE]; \/\/线性表存储元素的数组

int length; \/\/记录线性表的长度

} *SqList; \/\/线性表的名称

顺序表小结。

1、单链表的定义

链式存储:用一组任意的存储单元存储线性表中的数据元素。用这种方法存储的线性表

简称线性链表。

为了正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其直接后

继结点的地址(或位置),称为指针(pointer)或链(link),这两部分组成了链表中的结点结构,

链表是通过每个结点的指针域将线性表的 n 个结点按其逻辑次序链接在一起的。每一个结只

包含一个指针域的链表,称为单链表。

存储链表中结点的一组任意的存储单元可以是连续的,也可以是不连续的,甚至是零散

分布在内存中的任意位置上的。链表中结点的逻辑顺序和物理顺序不一定相同。

操作方便,总是在链表的第一个结点之前附设一个头结点(头指针)head 指向第一个。

2、双向链表

双向链表(double Linked List) :指的是构成链表的每个结点中设立两个指针域:一个指向

其直接前趋的指针域 prior,一个指向其直接后继的指针域 next。这样形成的链表中有两个

方向不同的链,故称为双向链表。将头结点和尾结点链接起来也能构成循环链表,并称之为

双向循环链表。

双向链表的结点的类型定义如下。其结点形式如图所示,带头结点的双向链表的形式如

图所示。

就是用数组来实现链式存储结构,目的是方便在不设指针类型的高级程序设计语言中使

用链式结构。实现原理:

1、使用结构体数组,结构体有指针域 cur 和数据域 data

2、一个数组分量表示一个节点,用 cur 代替指针指示节点在数组中

的相对位置

静态链表,就是用数组来实现链式存储结构,目的是方便在不设指

针类型的高级程序设计语言中使用链式结构。

1、在双向链表指针 p 的结点前插入一个指针 q 的结点操作是( )

2.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采

用( )存储方式最节省运算时间。

A.单链表 b.仅有头指针的单循环链表

c.双链表 d.仅有尾指针的单循环链表

3、下列关于线性表的叙述中,错误的是( )。

A. 顺序表是使用一维数组实现的线性表

b. 顺序表必须占用一片连续的存储单元

c. 顺序表的空间利用率高于链表

d. 在链表中,每个结点只有一个链域

【2016 年】已知表头元素为 c 的单链表在内存中的存储状态如下表所示

假设该链表只给出了头指针 list。在不改变链表的前提下,请设计一个尽可能高效的算

法,查找链表中 倒数第 k 个位置上的结点( k 为正整数)。若查找成功,算法输出该结点的

data 域的值,并返回 1;否则,只 返回 0。要求:

1 描述算法的基本设计思想;

2 描述算法的详细实现步骤;

3 根据设计思想和实现步骤,采用程序设计语言描述算法(使用 c、c++语言实现),

关键之处请给出简要注释。

(1)算法的基本设计思想:

问题的关键是设计一个尽可能高效的算法, 通过链表的一趟遍历,找到倒数第 k 个结

点的位置。算法的基 本设计思想是:定义两个指针变量 p 和 q,初始时均指向头结点的下。

如图(d)所示,当|t1-t2| == 1 时,表示共享栈满。那么大家可能会问一个问题,反正

就是这么一块空间,那我们二一添作五,直接均分不就行了(你好,我好,大家好,一片和

谐,此处应该有掌声)。均分看似合理,其实会导致很大问题,大家请想一下,程序的执行

是不确定的,也是不均衡的(好像说的有点玄乎),有的程序需要的空间大,有的程序需要

的空间小,图(b)中表示的是栈 1 占用的空间的大一些;图(b)中表示的是栈 2 占用的

空间的大一些,如果均分,就会出现旱涝不均,图(b)中栈 1 就会旱死(空间不够,而报

错),图(c)中栈 2 就会旱死(空间不够,而报错)。

5. 括号匹配问题

在文字处理软件或编译程序设计时,常常需要检查一个字符串或一个表达式中的括号是

否相匹配?

匹配思想:从左至右扫描一个字符串(或表达式),则每个右括号将与最近遇到的那个左

括号相匹配。则可以在从左至右扫描过程中把所遇到的左括号存放到堆栈中。每当遇到一个

右括号时,就将它与栈顶的左括号(如果存在)相匹配,同时从栈顶删除该左括号。

算法思想:设置一个栈,当读到左括号时,左括号进栈。当读到右括号时,则从栈中弹

出一个元素,与读到的左括号进行匹配,若匹配成功,继续读入;否则匹配失败,返回 FLASE。

6. 栈与递归调用的实现

栈的另一个重要应用是在程序设计语言中实现递归调用。递归调用:一个函数(或过程)

直接或间接地调用自己本身,简称递归(Recursive)。为了使递归调用不至于无终止地进行下

去,实际上有效的递归调用函数(或过程)应包括两部分:递推规则(方法),终止条件, 初始。

8k小说推荐阅读:小地方留守妇女的琐事神圣计划?可我是宝可梦训练家啊小凤凰三岁半,指挥毛茸茸成团宠迟来的深情,我不要了!疯了吧!别人重生种田,你重生炸山四合院:穿成何雨柱,开局就搬家穿越九零:卖辣条当厂长,创业忙四合院:夫债妻偿,淮茹心态崩了离婚后,我上离婚综艺被疯抢,前妻跪求复合重生后,我在恋综嗑cp救命,厌世大佬穿成农家小福女了妖族女帝是九尾狐,那我更喜欢了奥特:终焉的续章蝴蝶效应后,开启下一个世界快穿之天真小妖精叫君欲罢不能我在末世开鱼塘师父,我们去打房子怪吧离婚后摊牌不装了七零之吃不完,肉根本吃不完白月光冷又媚,偏执大佬夺她入怀夫人娇媚,要将军哄哄抱抱又亲亲权谋天下之甄嬛穿越戚夫人军婚:乔总滚去七零年代结婚了!重生之王妃太嚣张鉴宝鬼瞳:开局捡漏成首富十日终焉疯,疯,疯,整个大陆都疯颠我的上司是个日本人打团请优先保护法师灰太狼,你的天气魔方好香啊!农家福宝养大佬,坐拥天下想躺平黏人军官总是想亲亲,不要啊!异兽迷城四合院,融合万物,耕耘四九城女尊兽世,大猫娶夫养崽种田日常皇城探事司癫文炮灰女配手撕了剧本狩魔续魂高校里最恐怖的班级全方位幻想一念化仙魔深夜禁忌手记我在萌王当帝君四合院:还想坑我?挨个报复!残王的落跑小撩精斩男穿越后我拯救女主,脚踹渣男男主双穿:都是些啥破开局查出绝症当天,渣夫在给白月光过生日娘娘,你也不想皇上知道吧
8k小说搜藏榜:快穿双强钓系美人又撩又软小马宝莉:玫瑰从未凋零我成了怪物们的母亲我问佛佛问我世家娇娇女,竹马总裁跪着宠九叔:八岁道童,推演道法修仙偏执爱恋诸天之全能系统次元行者:从火影到无限生还游戏闪开,马甲大佬拯救那个病娇大佬下山后,被病娇霸总缠上了灵气复苏:我建立了修仙家族迷案追踪之追凶狂飙:陈书婷A爆京海明知此有鬼,偏向鬼地寻边缘【刑侦】仙路灵源重生救赎野痞阴鸷少年是恋爱脑为白金龙王献上美好世界漂亮后妈,甜翻全家斗罗:被迫内卷后我吊打比比东开局和魔魂抢身体斗罗:千仞雪的伐神之路港片:港岛大佬灵幻大陆:暗影崛起诡天,葬道,仙人墓谁惯你啊!娘娘她一心只想退婚穿到新婚夜,团宠太子妃一胎多宝精灵:偷师学艺成为最强班基拉斯句句不轻易救了鲛人后,他黏着我要亲亲凹凸世界:我的马甲全靠你们脑补殿下臣青春是难以升起的太阳惊世女将:我的空间藏雄兵狠狠爱,夜王的替宠傲妃穿越盗墓之这个世界有点颠开局流放:穿成太子的锦鲤小娇妻快穿:女配逆袭计狗官到青天:我有系统我怕谁高调嫁傻王,重生三小姐杀疯了盗墓:你们真的不是npc吗?修仙加模拟,飞升没道理死神:为战而生精灵:去吧我的鲲鲲!斩神:共生体始祖重生之青墨幽韵:素锦华年觅初银色玫瑰典藏你抄家,我搬空国库,比比谁更狠
8k小说最新小说:原神:身为世界意识升格提瓦特到部队离婚,极品前夫身败名裂我的内娱穿越之旅回到高三,但成为副本Boss未婚夫在风花雪月我忙着修炼成仙穿越到坎公成为勇士仙储八零串场女配太惹火传道达人张道林七零辣妻:恶毒大小姐到甜宠军嫂诱吻蜜糖提灯囚爱,这个疯批大佬有点爽娘娘步步为营,冷戾王爷脑补上位孔雀石与疯犬崩铁:谁让他加入星穹列车的!汴京小食堂星际兽世:她被sss级大佬抢疯啦!灵魂摆渡:我师傅是九叔原神:傲娇小猫被狠狠拿捏了!替长姐洞房后,被侯府大公子强宠了鬼妃归来,残王夜夜被我吸龙气!京师除妖录在诡异怪谈当边缘人协议离婚后,总裁前妻跪求我原谅诱他深陷:钓系美人杀疯了!【HP】罗斯克劳德的亲世代日记傅律师,太太说她不回头了女神异闻录:书与命运的彼方穿越大秦三岁半穿书后,我用美食征服四个反派崽崽四合院之开局就有一个女儿普通人的综影视神雕,李莫愁情定三生重生74:母亲割腕喂血,我靠打猎翻身爱,过时不候痴傻三年,开局撞见妻子出轨!霍总高调官宣,哥哥们肠子都悔青了萌宠兽世:兔姬的万兽朝凰路哀牢山传奇:灵界之战穿越火影陪四代目长大封神:截教双圣,震惊洪荒听懂兽语后,我带毛茸茸为国争光一觉醒来天塌啦!豪门老公破产了换嫁给早死世子,我带崽宠冠京城三岁小县主,京城大佬争着宠!亿万倍系统:从修真大陆崛起荒漠天灾:我有十亿亿吨清水!快乐吃瓜,大臣们纷纷破防了顶级偏爱!太子爷沦陷弯腰热吻TNT之我们要在一起