2020-03-01 被“河蟹”后的又一份周报

昨天写的周报不知道因为什么原因,早上起来后就被封了,那就再来一次吧......不知道这次会不会有同样的结果?


优秀的版式编排不仅可以使设计作品更鲜活、生动,而且能够达到最佳视觉传达效果。而在版式设计中,又存在着不少的版式编排类型,这次周报介绍先一下我认为的11种常见的版式编排类型。

标题型

一般标题在先‚接着是图片和文字内容等。这也是很常见的一种编排形式。此形式最大的特点就在于视觉结构稳定‚编排形式平易近人‚与人们的观赏阅读习惯比较一致。

标准型

通常‚图在版面的上面‚标题等内容在图的下面。这也是很常见的编排形式 ‚它与标题型的视觉效果基本上是相同的。

文字型

在这种编排中,文学是片面的主体,图片仅仅是点缀。设计时,一定要加强广告方案本身的感染力,同时字体便于阅读,符合人们的阅读习惯,并使图形起到锦上添花、画龙点睛的作用。

图片左(右)置型

图片纵向置于版面的左侧‚标题及内文则置于右侧‚并且所占版面较小。此编排方式其最大的优点就在于突出展现商品的视觉魅力‚对比强烈‚也容易给消费者留下比较深刻的印象。

交叉型

图形与内文是两个基本的构成要素‚版面的编排设计所要研究的就是这两者的关系。图形与内文既可以相互排列‚又可以相互交叉重叠等‚从而可以使版面形成富有视觉冲击的张力。

反常型

版面的编排方式与传统的常例有所不同。无论在图片的运用上还是在文字的组织上 ‚ 都有背常态和习惯。但这恰恰是其别出心裁的地方 ‚ 更容易引起人们的注意 。

中心型

所要表达的主要内容要素被放置在整个版面的中心位置‚形式集中、版面简洁、内容鲜明突出‚视觉效果一目了然。

图片型

版面由一张相对完整的图片构成。与其他编排形式中的图片不同 ‚ 这里的图片既是背景又是主题 ‚ 并且将所有内容统一到其中。内容明了形象‚版面统一完整‚形式具体逼真‚是一种比较流行的编排形式。

斜置型

在版面编排中‚图形或文字的主要部分向右或向左作方向倾斜。 这种设计形式最大的优点就在于刻意打破稳定和平衡‚从而赋予图形或文字以强烈的结构张力和视觉动感。

重复型

重复的构成要素是具有较强的吸引力,可以使版面产生节奏感,增力画面情趣。

自由型

任何设计和任何编排形式最终都没有一个限定的或特定的样式来让人照搬硬套‚设计的目的就在于不断创造出新的风摇形式‚新的视觉语言‚改变人们既有的生活内容、消费选择 ‚ 激发或培养人们新的生活意趣和生活品质。

栈和队列是两种重要的线性结构。从数据结构角度看,栈和队列也是线性表,但它们是操作受限的线性表,因此,可称为限定性的数据结构。但从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型。

栈的定义

栈(Stack) 是限定仅在表尾进行插入或删除操作的线性表。因此,对栈来说,表尾端称为栈顶top),表头端称为栈底bottom)。不含元素的空表称为空栈。

栈为后进先出的线性表,简称LIFO结构。

栈的表示和实现

和线性表类似,栈也有两种存储表示方法:顺序栈链栈

顺序栈,即栈的顺序存储结构是利用一组地址连续的存储单元依次存放自栈底到栈订的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。通常的习惯做法是以top=0表示空栈,但与C语言中数组的下标从0开始冲突。另栈在使用过程中所需的最大空间大小难以估计,因此,在初始化时不应限定栈的最大容量,可先为栈分配一个基本容量,在应用过程中,当栈的空间不够使用时再逐段扩大。

则顺序栈可定义如下:

typedef struct{SElemType*base;SElemType*top;int stacksize;}SqStack;

stacksize指示栈的当前可使用的最大容量。栈的初始化操作为:按设定的初始分量进行第一次存储分配,base为栈底指针,始终指向栈底位置,base值为null时,表明栈结构不存在。top为栈顶指针,初值指向栈底,即top = base可作为栈空的标记,每当插入新的栈顶元素时,指针top增1;删除栈顶元素时,指针top减1,因此非空栈中的栈顶指针始终在栈顶元素的下一个位置上

队列

队列的定义

队列是一种先进先出的线性表,它只允许在表的一端进行插入,而在另一端删除元素。这和我们日常生活中的排队是一致的,最早进入队列的元素最早离开。在队列中,允许插入的一端叫做队尾rear),允许删除的一段则称为队头front)。假设队列为q = (a1,a2,...an)则a1就是队头元素,an是队尾元素。

双端队列

除了栈和队列之外,还有一种限定性数据结构是双端队列:限定插入和删除操作在表的两端进行的线性表。两端分别称为端点1和端点2,也可像栈一样,可用一个铁道转轨网络来比喻双端队列。在实际使用中,还可以有输出首先的双端队列(即一个端点允许插入和删除,另一个端点只允许插入的双端队列)和输入首先的双端队列(即一个端点允许插入和删除,另一个端点只允许删除的双端队列)。而如果限定双端队列从某个端点插入的元素只能从该端点删除,则该双端队列就蜕变为两个栈底相邻接的栈了。

尽管双端队列看起来似乎比栈和队列更灵活,但实际上在应用程序中远不及栈和队列有用。

链队列——队列的链式表示和实现

和线性表类似,队列也有两种存储表示。

用链表表示的队列简称链队列。一个链队列需要两个分别指示队头和队尾的指针,分别称为头指针和尾指针才能唯一确定。为方便起见也给链队列添加一个头结点,并令头指针指向头结点。由此,空的链队列的判决条件为头指针和尾指针均指向头结点。如图所示

循环队列——队列的顺序表示和实现

在初始化建空队列时,约定front = rear = 0,每当插入新的队列尾元素时,尾指针增1,每当删除队列头元素时,头指针增1。因此,在非空队列中,头指针始终指向队列头元素,而尾指针始终指向队列尾元素的下一个位置,如图所示:

假设当前为队列分配的最大空间为6,则当队列处于d状态时,不可在继续插入新的队尾元素,否则将导致数组越界。然而此时又不宜如顺序栈那样,进行存储再分配扩大数组空间,因为队列的实际可用空间并为占满。因此提出了循环队列的概念。

如下图所示,队列头元素是J3,队列尾元素是J5,之后6、7、8插入,队列空间占满,有Q.front  = Q.rear,若3、4、5删除,队列空,同样有Q.front  = Q.rear。因此,只凭头指针=尾指针无法判断队列是空还是满,可有两种处理方法:其一是另设一个标志位以区别队列是空还是满;其二是少用一个元素空间,约定以队列头指针在队列尾指针的下一位置(即环状的下一位置)上作为队列满的标志。在C语言中,不能用动态分配的一维数组来实现循环队列,如果用户的应用程序中设有循环队列,则必须为它设定一个最大队列长度,若用户无法预估长度,则宜采用链队列。

Supergirl by Artgerm

你可能感兴趣的:(2020-03-01 被“河蟹”后的又一份周报)