发表于: 2017-06-12 00:00:15
2 1479
今天完成的事情:
1、看spring RMI文档。分离学员报名系统中的StudentService。但是遇到了问题。
2、听“洗髓换骨营”数据结构第一课。
明天计划的事情:
1、将原有学员系统中Service中拆分出来,变成一个RMI的Service。
2、部署两台Service,在WEB中随机访问任意一台Service。
遇到的问题:
收获:
数据结构检测题:
1.顺序存储方式的优点是存储密度大,且插入和删除运算效率高。
错误:
顺序表用物理上的相邻实现了逻辑上的相邻,要求用连续的存储单元顺序存储线性表中各元素,因此,对顺序表插入、删除时需要移动数据元素,影响了算法效率。
优点在于可以随机存取其中的任意元素。节省存储空间。
缺点在于插入删除的运算效率低。存储空间不便于扩充。
2.程序越短,运行的时间就越少。
错误:程序的运行时间取决于其时间复杂度,如果一个程序有许多循环嵌套,那么运行时间会很长。
3.非空线性表中任意一个数据元素都有且仅有一个直接前驱元素。
错误:除了第一个元素。
4.用一组地址连续的存储单元存放的元素一定构成线性表。
错误:
顺序表的存储方式为按逻辑顺序依次存放在一组地址连续的存储单元里。
而链式存储各个节点地址可以不连续,但也可以连续。
(错)1. 链表的每个结点中都恰好包含一个指针。
链表中的节点可以存放多个指针域,分别存放多个指针。例如双向链表中的节点可以含有两个指针域。分别存放指向其直接前驱和直接后继节点的指针。
( 错 )2. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。
第一、计算机不会这么自动化。
第二、链表的节点不会移动,只是指针内容改变。
( 错 )3. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。
线性表的每个节点也可能是一个复杂类型。
( 错 )4. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。
弄反了。
( 错 )5. 链式存储方式的优点是存储密度大,且插入、删除运算效率高。
存储密度不大。
( 错 )6. 线性表在物理存储空间中也一定是连续的。
线性表有两种存储方式,顺序存储和链式存储。后者不要求连续存放。
( 错 )7. 线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。
线性表有两种存储弗。当顺序存储时,辑上相邻的元素在存储的物理位置次序上也相邻。
假设有ABC三个元素进 S 栈的顺序是A\B\C,以下哪些是有可能的出栈序列?
ABC —— A进了,A出了。B进了,B出了。C进了,C出了。
BAC —— A进了,B进了。B出了,A出了。C进C出。
CAB —— 不可能。当C出栈时,依据进栈次序,A还被B拦在身后。
ACB—— A进A出。B进,C进。C出,B出。
BCA —— A进了。B进B出。C进C出,A出。
CBA —— 最不费脑子的方式。
队列的顺序存储及基本运算
队列的顺序存储结构可以简称为顺序队列,用一组地址连续的 存储单元 依次存放 队列中的数据元素。
设立两个指示器:
指向队头元素的指示器front
指向队尾的元素位置的指示器rear。
顺序队列的缺点——“假溢出”
假溢出是是队列在一端进入插入,TOP值就会增加,在另一端删除,当判断TOP==MAX-1是,就会说明已经队满,但实际在队列的另一端还是有存储空间的,这就是“假溢出”。
我听了课以后对“假溢出”的概念依旧很懵。于是百度了假溢出的相关概念:
【由于队列的性质(“删除”在队头而“插入”在队尾),所以当队尾指针rear等于m-1时,若front不等于-1,则队列中仍有空闲单元,所以队列并不是真满。这时若再有入队操作,会造成假“溢出”。】
【一是将队列元素向前“平移”(占用0至rear-front-1);二是将队列看成首尾相连,即循环队列(0..m-1)。在循环队列下,仍定义front=rear时为队空,而判断队满则用两种办法,一是用“牺牲一个单元”,即rear+1=front(准确记是(rear+1)%m=front,m是队列容量)时为队满。另一种解法是“设标记”方法,如设标记tag,tag等于0情况下,若删除时导致front=rear为队空;tag=1情况下,若因插入导致front=rear则为队满。】
找到了一段很合适的代码来模拟一下首尾相连防止假溢出。
测试一下,定义一个长度为10的队列,先入队9个数,再出队6个数,再入队一个数。
评论