当前位置:文档之家› 《数据结构基础教程》习题及解答

《数据结构基础教程》习题及解答

《数据结构基础教程》习题及解答
《数据结构基础教程》习题及解答

《数据结构基础教程》习题解答(新)

第1章习题解答

一、填空

1.数据就是指所有能够输入到计算机中被计算机加工、处理得符号得集合。

2.可以把计算机处理得数据,笼统地分成数值型与非数值型两大类。

3.数据得逻辑结构就就是指数据间得邻接关系。

4.数据就是由一个个数据元素集合而成得。

5.数据项就是数据元素中不可再分割得最小标识单位,通常不具备完整、确定得实际意义,只就是反映数据元素某一方面得属性。

6.数据就是以数据元素为单位存放在内存得,分配给它得内存区域称为存储结点。

7.每个数据元素都具有完整、确定得实际意义,就是数据加工处理得对象。

8.如果两个数据结点之间有着逻辑上得某种关系,那么就称这两个结点就是邻接得。

9.在一个存储结点里,除了要有数据本身得内容外,还要有体现数据间邻接关系得内容。

10.从整体上瞧,数据在存储器内有两种存放得方式:一就是集中存放在一个连续得内存存储区中;一就是利用存储器中得零星区域, 分散地存放在内存得各个地方。

11.在有些书里,数据得“存储结构”也称为数据得“物理结构”。

12.“基本操作”就是指算法中那种所需时间与操作数得具体取值无关得操作。

二、选择

1.在常见得数据处理中, B 就是最基本得处理。

A.删除

B.查找

C.读取

D.插入

2.下面给出得名称中, A 不就是数据元素得同义词。

A.字段

B.结点

C.顶点

D.记录

3. D 就是图状关系得特例。

A.只有线性关系

B.只有树型关系

C.线性关系与树型关系都不

D.线性关系与树型关系都

4.链式存储结构中,每个数据得存储结点里 D指向邻接存储结点得指针,用以反映数据间得逻辑关系。

A.只能有1个

B.只能有2个

C.只能有3个

D.可以有多个

5.本书将采用 C 来描述算法。

A.自然语言

B.流程图(即框图)

C.类C语言

D.C语言

6.有下面得算法段:

for (i=0; i

k++;

其时间复杂度为 B 。

A.O(1)

B.O(n)

C.O(log2n)

D.O(n2)

三、问答

1.中国百家姓中得赵、钱、孙、李、周、吴、郑、王……等姓氏数据之间,就是一种什么样得邻接关系,为什么?

答:就是一种线性关系,因为这些姓氏之间符合关系得“有头有尾,顺序排列”得特点。

2.什么就是数据结点?什么就是存储结点?它们间有什么关系?

答:数据结点即就是数据集合中得一个数据元素,存储结点就是存放数据结点得内存单

位。在存储结点里,不仅要存放数据结点得内容,还要(显式或隐式地)存放数据结点间得逻辑关系。

3.为什么说链式存储既提高了存储得利用率,又降低了存储得利用率?

答:由于链式存储就是通过指针来体现数据元素之间得逻辑关系得,因此,存储结点可以不占用存储器得连续存储区。从这个意义上说,链式存储能够充分利用存储器中小得存储区,因此提高了存储器得利用率。另一方面,链式存储中得存储结点不仅要存放数据元素,还要占用适当得存储区来存放指针,这就是一种额外得存储开销。从这个意义上说,链式存储降低了存储器得利用率。

4.列举几个数据之间具有树型结构得实际例子。

答:学校各级管理之间,就是一种分支层次结构;一本书得书目,就是一种分支层次结构。

5.判断如下除法过程就是否就是一个算法,为什么:

(1)开始;

(2)给变量m赋初值5,给变量n赋初值0;

(3)m=m/n;

(4)输出m;

(5)结束。

答:因为0不能为除数,本题第(3)步不具有有效性,所以它不就是一个算法。但如果n 得初值不为0,则就是一个正确得算法。

四、应用

1.用类C语言中得do-while语句,描述输出整数1、2、3、……、9、10得过程。

答:算法编写如下。

void num ()

{

i=1;

do

{

printf (“i = %d\n”, i );

i = i +1;

} while (i<= 10);

}

2.用类C语言中得if-else语句,编写算法,描述当输入得数据大于等于0时,输出信息:“输入得就是正数”;当输入得数据小于0时,输出信息:“输入得就是负数”。

答:算法编写如下。

void judge ()

{

scanf (“%d\n”, &x);

if (x>=0)

printf (“输入得就是正数”);

else

printf (“输入得就是负数”);

}

3.分析算法段中标有记号“#1”与“#2”得基本操作得执行次数:

for ( i=0; i

for (j=0; j

{

#1 y=1;

for (k=0; k

#2 y=y+1;

}

答:标有记号“#1”得基本操作得执行次数就是:n2;标有记号“#2”得基本操作得执行次数就是:n3。

4.给出下面3个算法段得时间复杂度:

(1)x++;

(2)for (j=1; j

x++;

(3)for (j=1; j<=n; j++)

{

printf (“j=%”, j);

for (k=j; k<=n; k++)

x++;

}

答:(1)得时间复杂度为O(1);

(2)得时间复杂度O(n);

(3)中“printf (“j=%”, j);”执行次数得数量级为O(n),“x++;”执行次数就是:

n+(n-1)+(n-2)+……+2+1 = n(n+1)/2

其数量级为O(n2),因此整个算法段得时间复杂度应该就是O(n2)。

第2章习题解答

一、填空

在数据结构里就称其为线性表。

被称为顺序表。

4.以链式存储结构实现得线性表,被称为链表。

5.不带表头结点得链表,就是指该链表得表头指针直接指向该链表得起始结点。

6.在一个双链表中,已经由指针ptr指向需要删除得存储结点,则删除该结点所要执行得两条操作就是①ptr->Prior->Next = ptr->Next; ②ptr->Next->Prior = ptr->Prior; 。

7.设tail就是指向非空、带表头结点得循环单链表得表尾指针。那么,该链表起始结点得存储位置应该表示成 tail->Next->Next 。

8.在一个不带表头结点得非空单链表中,若要在指针qtr所指结点得后面插入一个值为x得结点,则需要执行下列操作:

ptr = malloc (size);

ptr->Data = x ;

ptr->Next = qtr->Next ;

qtr->Next = ptr ;

9.顺序表Sq = (a1,a2,a3,…,a n)(n≥1)中,每个数据元素需要占用w个存储单元。若m 为元素a1得起始地址,那么元素a n得存储地址就是m+(n-1)*w。

10.当线性表得数据元素个数基本稳定、很少进行插入与删除操作,但却要求以最快得速度存取表中得元素时,我们应该对该表采用顺序存储结构。

二、选择

1.下面,对非空线性表特点得论述, C 就是正确得。

A.所有结点有且只有一个直接前驱

B.所有结点有且只有一个直接后继

C.每个结点至多只有一个直接前驱,至多只有一个直接后继

D.结点间就是按照1对多得邻接关系来维系其逻辑关系得

2.一般单链表Lk_h为空得判定条件就是 A 。

A.Lk_h == NULL

B.Lk_h->Next == NULL

C.Lk_h->Next == Lk_h

D.Lk_h != NULL

5.在一个单链表中,已知qtr所指结点就是ptr所指结点得直接前驱。现要在qtr所指结点与ptr所指结点之间插入一个rtr所指得结点,要执行得操作应该就是 C 。

A.rtr->Next = ptr->Next; ptr->Next = rtr;

B.ptr->Next = rtr->Next;

C.qtr->Next = rtr; rtr->Next = ptr;

D.ptr->Next = rtr; rtr->Next = qtr->Next;

6.在一个单链表中,若现在要删除ptr指针所指结点得直接后继结点,则需要执行得操作就是 A 。

A.ptr->Next = ptr->Next->Next ;

B.ptr = ptr->Next; ptr->Next = ptr->Next->Next ;

C.ptr = ptr->Next->Next ;

D.ptr->Next ptr ;

7.在长度为n得顺序表中,往其第i个元素(1≤i≤n)之前插入一个新得元素时,需要往后移动 B 个元素。

A.n-i

B.n-i+1

C.n-i-1

D.i

8.在长度为n得顺序表中,删除第i个元素(1≤i≤n)时,需要往前移动 A 个元素。

A.n-i

B.n-i+1

C.n-i-1

D.i

9.设tail就是指向一个非空带表头结点得循环单链表得尾指针。那么,删除链表起始结点得操作应该就是 D 。ZkFAM。

A.ptr = tail ;

B.tail = tail->Next ;

tail = tail->Next ; free (tail) ;

free (ptr);

C.tail = tail->Next->Next ;

D.ptr = tail->Next->Next ;

Free (tail); tail->Next->Next = ptr->Next ;

Free (ptr); free (ptr);

10.在单链表中,如果指针ptr所指结点不就是链表得尾结点,那么在ptr之后插入由指针qtr所指结点得操作应该就是 B 。

A.qtr->Next = ptr ;

B.qtr->Next = ptr->Next ;

ptr->Next = qtr ; ptr->Next = qtr ;

C.qtr->Next = ptr->Next ;

D.ptr->Next = qtr ;

ptr = qtr ; qtr->Next = ptr ;

三、问答

1.试问,如下得线性表:

L = (29,25,21,17,13,11,7,5,3,1)

就是有序线性表还就是无序线性表?

答:L就是一个有序线性表。

2.线性表L第i个存储结点a i得起始地址LOC(a i)可以通过下面得公式计算得到:

LOC(a i)= LOC(a i-1)+k

其中k表示存储结点得长度。这个公式对吗?为什么?

答:这个公式就是对得,因为第i个存储结点a i得起始地址LOC(a i),实际上就就是等于第i-1个存储结点a i-1得起始地址LOC(a i-1)加上一个存储结点得长度k得到。

3.试说明创建顺序表算法Create_Sq ()中,Sq_max与Sq_num得不同之处。

答:Sq_max代表得就是顺序表得最大长度,也就就是它最多可以容纳下多少个数据元素,顺序表创建后,Sq_max就是一个保持不变得常量;Sq_num代表得就是顺序表内当前拥有得数据元素个数,在顺序表创建后,随着对数据元素进行得插入、删除操作,Sq_num将会不断地发生变化。

4.如何判断一个顺序表就是否为空?

答:只需判定Sq_num得当前值就是多少,如果Sq_num为0,则表示顺序表Sq为空,否则表示该顺序表里有数据元素存在。

5.在算法2-3里,操作“Sq_num=Sq_num -1”得作用就是什么?没有它行吗?

答:该操作就是非常重要得,因为顺序表里当前拥有得元素个数就是通过Sq_num来记录得,删除了一个元素,Sq_num必须减1,这样才能正确反映出删除后表中元素得个数。所以,没有这个操作就是不行得。

6.在算法2-9里,如果现在就是把一个结点插入到单链表尾结点得后面。按照算法得描述,能够保证插入后最后一个结点得Next域为“Λ”吗?

答:能够。因为原来ptr->Next里就是“Λ”,做了第1步操作:

qtr->Next = ptr->Next ;

后,就就是把插入结点得Next域置为“Λ”。

7.在一个单链表中,为了删除指针ptr所指得结点,有人编写了下面得操作序列。读懂并加以理解。试问,编写者能够达到目得吗?其思想就是什么?

x = ptr->Data ;

qtr = ptr->Next ;

ptr->Data = ptr->Next->Data ;

ptr->Next = ptr->Next->Next ;

free (qtr);

答:能够达到删除指针ptr所指结点得目得。编写者得思想就是不去直接删除ptr所指得结点,而就是在把ptr直接后继得Data域内容写入ptr所指结点得Data域之后,把它得直接后继删除。对于单链表来说,得到一个结点得直接后继容易,得到它得直接前驱难,所以这样得设计就是有其可取之处得。

8.在一个单链表中,为了在指针ptr所指结点之前插入一个由指针qtr所指得结点,有人编写了下面得操作序列,其中temp就是一个临时工作单元。读懂并加以理解。试问,编写者能够达到目得吗?其思想就是什么?

qtr->Next = ptr->Next ;

ptr->Next = qtr ;

temp = ptr->Data ;

p->Data = qtr->Data ;

qtr->Data = temp ;

答:能够达到在指针ptr所指结点之前插入一个由指针qtr所指结点得目得。编写者得思想就是考虑到在单链表中得到一个结点得前驱信息较为困难,因此在这里先把qtr所指结点插入到ptr所指结点得后面,暂时成为它得直接后继。然后通过临时工作单元temp,将ptr 及qtr所指结点得Data域内容进行交换,从而达到插入得目得。

9.打算形成一个有表头结点得循环双链表,初始时除了每个结点得Next域已经链接好外,它们得Prior域还都就是空得。有人编写了下面得算法,试图完成Prior域得链接: _Cd (Cd_h)

{

ptr = Cd_h->Next ;

qtr = Cd_h ;

while (ptr != Cd_h)

{

ptr ->Prior = qtr ;

qtr = ptr ;

ptr = ptr->Next ;

}

Cd_h->Prior = qtr ;

}

读懂并理解它,解释为什么能够完成各结点得Prior域得链接?

答:算法中用两个指针ptr与qtr配合,从头到尾扫描这个循环双链表,以达到让每个结点得Prior域指向其直接前驱得目得。

四、应用

1.设计一个计算表头指针为Lk_h得单链表长度(即结点个数)得算法。

答:算法设计如下:

Length_Lk (Lk_h)

{

n = 0 ;

ptr = Lk_h ; /* ptr指向起始结点 */

while (ptr != NULL)

{

ptr = ptr->Next ;

n=n+1 ; /* n为结点计数单元 */

}

return (n) ;

}

2.用总就是在表得头部插入整数结点得方法建立一个单链表,当输入为0时,建表过程结束。

答:算法设计如下:

Clink()

{

Lk_h = NULL;

scanf (%d, &x);

while (x != “0”)

{

ptr = malloc (size);

ptr->Data = x;

ptr->Next = Lk_h;

Lk_h = ptr;

scanf (%d, &x);

}

return Lk_h;

}

3.一个不带表头结点得循环双链表Ck得表头指针为Ck_h,要在指针ptr指向处前插入一个rtr所指结点。模仿图2-21,对一般插入位置标示出下面4个操作步骤:

①rtr->Next = ptr ;

②rtr->Prior = ptr->Prior ;

③ptr->Prior->Next = rtr ;

④ptr->Prior = rtr ;

答:4个操作步骤得具体功能体现如下图所示。

4.试设计一个算法copy (Ck_h1, Ck_h2),将一个带表头结点得、以Ck_h1为表头指针得单链表Ck1得内容,复制到一个不带表头结点得、以Ck_h2为表头指针得单链表Ck2中。

答:算法具体如下。

Copy (Ck_h1, Ck_h2)

{

ptr = Ck_h1->Next ;

qtr = Ck_h2 ;

while ( ptr != NULL)

{

rtr = malloc (size);

rtr->Data = ptr->Data ;

qtr->Next = rtr ;

qtr = rtr ;

ptr = ptr->Next ;

}

qtr->Next = NULL ;

}

5.已知一个带表头结点得递增单链表。试编写一个算法,功能就是从表中去除值大于min、且值小于max得数据元素。(假定表中存在这样得元素)

答:所需算法编写如下。

Del_Sq(Lk_h, nim, max)

{

ptr = Lk_h->Next ; /* ptr指向链表得起始结点 */

while ( (ptr != NULL) && (ptr->Data <= min) ) /* 跳过所有值<=min得结点 */

{

qtr = ptr ;

ptr = ptr->Next ;

}

while ( (ptr != NULL) && (ptr->Data Next ;

qtr->Next = ptr ; /* qtr指出第1个大于max得结点位置,完成链接 */ }

6.已知一个带表头结点得无序单链表。试编写一个算法,功能就是从表中去除所有值大于min、且值小于max得数据元素。

答:所需算法编写如下,其中指针ptr总就是指向当前被检查得结点,qtr总就是指向被检查结点得直接前驱。

Del_Lk (Lk_h, min, max)

{

ptr = Lk_h->Next ; /* ptr指向单链表得起始结点 */

while (ptr != NULL) /* 扫视直到链尾结点 */

{

if ( (ptr->Data <= min) || (ptr->Data >= max) /* 不满足删除条件 */

{

qtr = ptr ; /* 往后移动qtr与ptr */

ptr = ptr->Next ;

}

else /* 删除ptr所指结点,往后移动ptr */

{

qtr->Next = ptr->Next ;

free (ptr);

ptr = qtr->Next ;

}

}

}

7.一个单链表Lk得表头指针为Lk_h,不同结点得Data域值有可能相同。编写一个算法,功能就是计算出Data域值为x得结点得个数。

答:算法应该遍历链表得每一个结点,遇到一个结点得Data域值为x时,计数器n就加1。最后返回计数器n。

Count_Lk (Lk_h)

{

n = 0 ;

ptr = Lk_h ;

while (ptr != NULL)

{

if (ptr->Data == x)

n = n+1 ;

ptr = ptr->Next

}

return (n) ;

}

第3章习题解答

一、填空

1.限定插入与删除操作只能在一端进行得线性表,被称为就是栈。

2.如果在顺序栈满时仍打算进行进栈操作,就称为发生了“上溢”出错。

3.如果在顺序栈空时仍打算进行出栈操作,就称为发生了“下溢”出错。

4.在具有n个数据结点得循环队列中,队满时共有n-1 个数据元素。

5.如果操作顺序就是先让字母A、B、C进栈,做两次出栈;再让字母D、E、F进栈,做一次出栈;最后让字母G进栈,做三次出栈。最终这个堆栈从栈顶到栈底得余留元素应该就是DA 。

6.中缀表达式(a+b)-(c/(d+e))对应得后缀表达式就是 ab+cde+/- 。

7.函数得递归调用有两种形式:如果一个函数就是直接调用自己,就称其为直接递归调用;如果一个函数就是通过另一个函数来调用自己,就称其为间接递归调用。

8.设某栈得元素输入顺序就是1、2、3、4、5,想得到4、3、5、2、1得输出顺序。那么push、pop得操作序列应该就是 push、push、push、push、pop、pop、push、pop、pop、pop 。

允许进行删除得一端称为队首。

二、选择

1.一个栈得元素进栈序列就是a、b、c、d、e,那么下面得 C 不能做为一个出栈序列。

A.e、d、c、b、a

B.d、e、c、b、a

C.Qs_front == Qs_rear

D.Qs_front == Qs_rear+size

4.在一个链式队列Lq中,Lq_front与Lq_rear分别为队首、队尾指针。现在由指针ptr 所指结点要进队,则插入操作应该就是 B 。

A.Lq_front->Next = ptr; Lq_front = ptr;

B.Lq_rear->Next = ptr; Lq_rear = ptr;

C.ptr->Next = Lq_rear; Lq_rear = ptr;

C.删除操作更加便利

D.通常不会出现栈满得情形

6.向链栈插入一个结点时,操作顺序应该就是 C 。

A.先修改栈顶指针,再插入结点

B.无须修改栈顶指针

C.先插入结点,再修改栈顶指针

D.谁先谁后没有关系

7.从链栈中删除一个结点时,操作顺序应该就是 A 。

A.先保存被删结点得值,再修改栈顶指针

B.先修改栈顶指针,再保存被删结点得值

C.无须修改栈顶指针得值

D.谁先谁后没有关系

8.一个循环队列得最大容量为m+1,front为队首指针,rear为队尾指针。那么进队操作时求队位号应该使用公式 D 。

A.Cq_front = (Cq_front+1)%m

B.Cq_front = (Cq_front+1)%(m+1)

C.Cq_rear = (Cq_rear+1)%m

D.Cq_rear = (Cq_rear+1)%(m+1)

C.任意位置

D.队首元素得后一个队位

10.若一个栈得进栈序列就是1、2、3、4,那么要求出栈序列为3、2、1、4时,进、出栈操作得顺序应该就是 A 。(注:所给顺序中,I表示进栈操作,O表示出栈操作)

A.IIIOOOIO

B.IOIOIOIO

C.IIOOIOIO

D.IOIIIOOO

三、问答

1.若元素进栈得序列就是1、2、3、…、n,有一个出栈序列得第1个元素就是n。那么,这个出栈序列得第i个元素就是什么?cgjk9。

答:由于栈具有“先进后出”得特性,因此只有将1、2、3、…、n依次都进栈后,出栈序列得第1个元素才能就是n。所以,在这个出栈序列里,第个i元素应该就是n-i+1。e4Z9b。

2.设元素进栈得次序就是a,b,c,d,e。试问,在下面所列得6种元素序列里,哪些可以就是这个栈得出栈序列?

A.c,e,a,b,d

B.c,b,a,d,e

C.d,c,a,b,e

D.a,c,b,e,d

E.a,b,c,d,e

F.e,a,b,c,d

答:对A进行分析。由于就是c第1个出栈,因此b必须先于a出栈。但所给序列里,a 却先于b出栈,故A不能就是该栈得出栈序列。

对C进行分析。由于就是d第1个出栈,因此a、b、c三者出栈得顺序必须就是c、b、a。但所给序列里,a却先于b出栈,故C不能就是该栈得出栈序列。

对F进行分析。由于就是e第1个出栈,因此a、b、c、d四者出栈得顺序必须就是d、c、b、a。但所给序列里,它们得出栈顺序全乱了,故F不能就是该栈得出栈序列。

因此,所列得6种元素序列里,只有B、D、E可以就是这个栈得出栈序列。

3.有一个顺序栈Ss,其栈顶指针为Ss_top,栈底指针为Ss_bottom。阅读下面给出得算法,其中得两条prinf函数得输出结果各就是什么?(算法中得Push_Ss(Ss_top, ch)表示将ch里得元素进栈,Pop_Ss(Ss_top, ch)表示将栈顶元素出栈,存入ch中)

print ()

{

for (ch = ‘A’; ch <= ‘A’+12 ; ch++)

{

Push_Ss(Ss_top, ch) ;

printf (“%c”, ch);

}

while (Ss_top != Ss_bottom)

{

Pop_Ss(Ss_top, ch);

printf (“%c”, ch);

}

}

答:第1条printf得输出就是前13个英文大写字母ABCDEFGHIJKLM,第2条printf输出得就是前面输出得倒置,即MLKJIHGFEDCBA。

4.设有6个元素a1、a2、a3、a4、a5、a6,它们以此顺序依次进栈。假定要求它们得出栈顺序就是a4、a3、a2、a6、a5、a1,那么应该如何安排push与pop操作序列?

答:所需得push与pop操作序列如下:

push,push,push,push,pop,pop,pop,push,push,pop,pop,pop

5.有中缀表达式a / ( b / ( c / ( d / e ) ) )。有人将其转化为相应得后缀表达式就是abcde////。这一转化结果对吗?

答:转化结果就是对得。

6.试述栈与队列各自具有什么样得逻辑特点?它们之间又有什么共同点?

答:对于栈来说,由于只能在栈顶处进行插入与删除操作,这就使得数据元素到达栈(即往栈里插入元素)得顺序与数据元素离开栈(即从栈里删除元素)得顺序恰好相反。所以,堆栈得逻辑特点就是后进先出(LIFO),或先进后出(FILO)。而对队列来说,插入在一端进行,删除在另一端进行,这就使得数据元素到达队列(即往队列里插入元素)得顺序与数据元素离开队列(即从队列里删除元素)得顺序就是完全一致得。所以,队列得逻辑特点就是先进先出(FIFO)

或后进后出(LILO)。它们之间得共同之处就是插入与删除只能在表得端点处进行(要知道,对于线性表,可以在表得任何位置处插入与删除)。

7.有一个顺序队列,最大容量为5。初始时有Qs_front = Qs_rear = 0。画出做下列操作时队列及其首、尾指针得变化情况。若不能进队时就停止,并简述原因。

(1)d、e、b进队(2)d、e出队 (3)i、j进队

(4)b出队(5)n、o、p进队

答:队列及其首、尾指针得变化情况如下图所示。

在做(5)时,由于队满(假溢出),故操作停止。

8.有一个递归函数Write(),定义如下:

Write(x)

{

if (x != 0)

{

Write (x-1) ;

for (j=1; j<=x; j++)

printf (“%3d”, x);

printf (“/n”);

}

}

试问,Write(5)得输出结果就是什么?

答:输出结果为:

1

2 2

3 3 3

4 4 4 4

5 5 5 5 5

四、应用

1.编写一个判顺序栈空得算法。要求就是如果栈空,返回1,否则返回0。

答:算法设计如下:

Empty_Ss (Ss, Ss_top)

{

if (Ss_top == 0) /* 栈空 */

return (1) ;

else /* 栈不空 */

return (0) ;

}

2.编写一个算法,它能够输出顺序队列Qs上所有元素得值。

答:算法编写如下:

Print_Qs (Qs_front, Qs_rear)

{

if (Qs_front == Qs_rear) /* 队列空!*/

printf (“queue is empty!”);

else /* 队列非空!*/

{

qtr = Qs_front ;

while (qtr <= Qs_rear)

{

printf (“%d”, *qtr);

qtr++ ;

}

}

}

3.编写一个算法,它能够取得链式队列首元素得值。

答:取得链式队列首元素得值,只有在队列非空得前途下才有意义。算法编写如下。

Getf_Lq(Lq_front, Lq_rear)

{

if (Lq_front == Lq_rear) /* 队列空!*/

printf (“The linked queue is empty!”);

else /* 队列非空!*/

{

ptr = Lq_front->Next ;

x = ptr->Data ;

return (x) ;

}

}

4.有五个人顺序坐在一起。问第5个人多少岁,回答说比第4个人大2岁;问第4个人多少岁,回答说比第3个人大2岁;问第3个人多少岁,回答说比第2个人大2岁;问第2个人多少岁,回答说比第1个人大2岁;问第1个人多少岁,回答说就是10岁。试给出该递归得公式、结束条件,并编写出相应得递归算法。

答:递归公式为:

age(n)=age(n-1)+2 2<=n<=5

递归得结束条件就是:

age(1)=10

相应算法为:

Age (n)

{

if (n == 1)

return (10);

else

{

x=age(n-1)+2 ;

return (x) ;

}

}

5.将中缀表达式转化为后缀表达式得方法类似于中缀表达式求值。具体地,要开辟一个运算符栈op与一个数组st。在自左至右扫描算术表达式时,遇到操作数就直接顺序存入st;遇到运算符时就与op栈顶元素比较,高则进栈,不高则让栈顶元素出栈,存入st,然后该运算符再次去与新得op栈顶元素比较。最后,在数组st里形成所需要得后缀表达式。试用这种方法,用图示将中缀表达式5+8*3-2转化成为相应得后缀表达式。

答:相应得后缀表达式就是583*+2-,其图示如下。

6.语言编译时,总就是先将中缀表达式转化成为后缀表达式,然后再计算后缀表达式得值,因为后缀表达式已经去除了括号,没有了运算符得优先级。计算后缀表达式得方法就是只开辟一个对象栈ob,当从左往右扫描后缀表达式时,每遇到操作数就让其进入ob栈,每遇到运算符就从ob栈里弹出两个操作数进行当前得计算,并将计算结果进ob栈。该过程直至整个表达式结束。ob栈得栈顶值就就是最终结果。试用图示计算后缀表达式583*+2-得值。

答:计算结果为27,其图示如下。

第4章习题解答

一、填空

1.字符串就是一种特殊得线性表,特殊在于它得数据元素只能就是字符 ,特殊在于串可以作为一个整体参与所需要得处理。

2.空格串就是由空格组成得串,空串就是不含任何字符得串,因此空格串与空串不就是一个概念。

3.字符串中任意多个连续字符所组成得子序列,被称作就是这个串得“子串”,这个字符串本身则称为“主串”。

4.我们说两个字符串相等,在计算机内部实际上就是通过对相应位置上字符 ASCII 码得比较而得到得结论。

5.设有串s=“I am a teacher”。该串得长度就是 14 。

6.设有三个串:s1=“Good”,s2=“Ф”,s3=“bye!”。则s1、s2、s3连接后得结果串应该就是“Good bye! ”。YRBFd。

7.所谓“数组”,就是指n(n>1)个具有相同类型得数据得有序集合。

矩阵与通常所说得二维数组有关。

9.所谓“特殊矩阵”,就是指那些元素在矩阵中得分布具有一定规律性得矩阵;而矩阵中得零元素个数远远多于非零元素得个数,但非零元素得分布却没有规律,这样得矩阵被称

为“稀疏矩阵”。

10.在一个n阶方阵A中,若所有元素都有性质:a ij = a ji (1≤i, j≤ n),就称其为对称矩阵。

二、选择

1.设有两个串s1与s2。求s2在s1中首次出现得位置得操作称为 B 。

A.连接

B.模式匹配

C.求子串

D.求串长

2.有串:“Ф”,那么它得长度就是 B 。

A.0

B.1

C.2

D.3

3.设有串s1=“ABCDEFG”与s2=“PQRST”。已知:算法con(x, y)返回串x与y得连接串;subs(s, i, j)返回串s得第i个字符开始往后j个字符组成得子串;len(s)返回串s得长度。那么,con(subs(s1, 2, len(s2)), subs(s1, len(s2), 2))得操作结果就是串 D 。

A.BCDEF

B.BCDEFG

C.BCPQRST

D.BCDEFEF

4.设有一个8阶得对称矩阵A,采用以行优先得方式压缩存储。a11为第1个元素,其存储地址为1,每个元素占一个地址空间。试问元素a85得地址就是 A 。Sr4vo。

A.33

B.30

C.13

D.23

5.一个m*m得对称矩阵,如果以行优先得方式压缩存入内存。那么所需存储区得容量应该就是 C 。

A.m*(m-1)/2

B.m*m/2

C.m*(m+1)/2

D.(m+1)*(m+1)/2

6.二维数组M得每个元素含4个字符(每个字符占用一个存储单元),行下标i从1变到5,列下标j从1变到6。那么按行顺序存储时元素M[4][6]得起始地址与M按列顺序存储时元素 B 得起始地址相同。

A.M[3][5]

B.M[4][5]

C.M[4][6]

D.M[5][5]

7.二维数组M中得每个元素占用3个存储单元,行下标i从1变到8,列下标j从1变到10。现从首地址为SA得存储区开始存放A。那么该数组以行优先存放时,元素A[8][5]得起始地址应该就是 C 。

A.SA+141

B.SA+180

C.SA+222

D.SA+225

8.设有一个5阶上三角矩阵A,将其元素按列优先顺序存放在一维数组B中。已知每个元素占用2个存储单元,B[1]得地址就是100。那么A[3][4]得地址就是 A 。Gd5I3。

A.116

B.118

C.120

D.122

(分析:把一个上三角矩阵按列优先顺序存放在一个一维数组B中,元素得顺序就是:

a11a12a22a13……

A[3,4]得地址=100+a34前面得元素个数*2

=100+(前3列得个数+本列a34前面得个数)*2

=100+((1+2+3)+2)*2=116

)

三、问答

1.为什么可以把二维数组视为就是一种线性结构?

答:实际上,二维数组就是一种较为复杂得数据结构,数据元素之间得关系并不就是线性得。不过,如果我们把它瞧作就是其每个元素为一维数组得一个一维数组,那么就可以把二维数组视为就是线性表得一种推广(因为一维数组即就是线性表),因此可以说它得数据元素间得逻辑关系呈现出得就是一种线性结构。

2.图4-34(a)所示为一个特殊矩阵A5 5,这种形式得矩阵被称作就是“带状矩阵”,因为它得非零元素都分布在以主对角线为中心得一个带状区域里,其她位置上得元素全部为0。可以以行优先得方式,将其压缩存储到一个一维数组里,如图4-34(b)所示。试找出元素下标i、j与存储序号k间得对应关系。

图4-34 带状矩阵

答:压缩存储元素下标i、j与存储序号k间得对应关系就是:

k = 2*i + j – 2

3.一个稀疏矩阵如图4-35所示。试问,它对应得三元组表就是什么?

图4-35 稀疏矩阵示例

答:它所对应得三元组表如下。

四、应用

1.请将算法4-1改为用while循环来实现。

答:改写得算法4-1可以就是如下所示。

Concat_St(St1, St2)

{

char St3[maxsize]; /* 创建一个新得顺序串为空 */

St3_len=0;

if (St1_len+St2_len>maxsize+1) /* 新串放不下两个串 */

{

printf(“两串长度之与超长!”);

return(NULL);

}

else

{

i=1;

while (i<=St1_len)

{

St3[i]=St1[i];

i++;

}

j=1;

while (j<= St2_len)

{

St3[j+St1_len]=St2[j];

j++;

}

St3_Len=St1_len+St2_len;

St3[St3_len+1]= “\0”;

return(St3);

}

}

2.算法4-2也可以这样来描述,直接核对相应位置上得字符就是否相同,然后再分别情况做出判断:一就是有不相同得字符出现,一就是有一个字符串比另一个字符串长,最后则就是两个串完全相等。按照这样得设计,改写算法4-2。

答:按照这样得设计,算法4-2得描述如下。

Equal_St(St1, St2)

{

i=1;

while (St1[i] != “\0”) /* 两串进行比较 */

{

if (St1[i] == St2[i]) /* 相等,继续比较 */

i++;

else /* 不等,强制退出 */

black;

}

if (St1[i] != St2[i]) /* 比较就是由于相应位置上得字符不同而结束 */

return (0);

else

{

if (St1[i] != “\0” || St2[i] != “\0”) /* 比较就是由于长度不同而结束*/

return (0);

else

return (1);

}

}

3.算法:

Trans_St(St,ch1,ch2)

{

i=1;

While(St[i]!="\0")

{

if(St[i]==ch1)

St[i]==ch2;

i++;

}

}

就是通过while循环来实现将顺序串St中所有得字符ch1改为字符ch2得。请改写成用for循环来实现相同得功能。

答:用for 循环改写得算法如下。

Trans_St(St, ch1, ch2)

{

for (i=1; i<=St_len; i++)

if (St[i] == ch1)

St[i] = ch2;

}

4.编写一个算法,将顺序串St中所有得大写字母全部换成小写字母。(提示:大写英文字母A~Z对应得ASCII码为65~90,小写英文字母a~z对应得ASCII码为97~122,在大写字母得

ASCII码上加32,就就是对应小写字母得ASCII码)

答:算法编写如下。

Catosm_St(St)

{

for (i=1; i<=St_len; i++)

if ((A<=St[i])&&(St[i]<=Z))

St[i]=St[i]+32;

}

5.已知顺序串St,编写一个算法,将其中第i个字符开始连续得j个字符删除。(提示:先要判断所给参数就是否合理,然后通过将第i+j开始往后得字符全部移动j个位置,完成删除得功能)

答:算法编写如下。

Moveij(St, i, j)

{

if (i+j<=St_len)

{

for (k=i+j; k<=St_len; k++) /* 将i+j开始往后得所有字符前移j个位置 */

St[k-j]=St[k];

St_len=St_len-j; /* 修改St得长度 */

St[St_len]= “\0”; /* 安放新得串结束符 */

}

else

printf (“参数不合理,无法进行删除!”);

}

6.在算法4-12得最后,为了释放被删结点使用得存储空间,先做了操作:

ptr->Next = NULL;

把由指针ptr指向得最后一个要释放空间得结点得Next域设置为NULL,然后通过while循环完成释放。其实,由于知道要释放空间得结点共有m个,因此可以取消这一操作,改用for 循环通过m来控制释放空间得结点个数。请试着按照这一思路改写那一小段算法。

答:改写一小段算法如下。

for (j=1; j<=m; j++)

{

ptr=rtr;

rtr=rtr->Next;

free(ptr);

}

7.编写一个算法,功能就是复制一个链串。

答:复制一个完整得链串,就是一件比较容易得事情。其算法起名为Copy_Lt(),参数为Lt1。具体编写如下。

Copy_Lt(Lt1)

{

ptr=Lt1_h;

rtr=malloc(size);

rtr->Data=ptr->Data;

Lt2_h=rtr;

ptr=ptr->Next;

while (ptr != NULL)

{

qtr=malloc(size);

qtr->Data=ptr->Data;

rtr->Next=qtr;

ptr=ptr->Next;

}

rtr->Next=NULL;

return(Lt2_h);

}

算法就是通过while循环,不断修改指针ptr,以便指向链串Lt1得各个结点;指针rtr

总就是指向当前已形成得新链串Lt2得最后一个结点;用指针qtr指向刚申请到得新存储结点,并把它链入到rtr所指结点得后面。

8.已知两个mⅹn得矩阵A与B。编写一个算法,求C=A+B。即C也就是一个mⅹn得矩阵,其元素满足条件:

c ij = a ij + b ij(1≤i≤m,1≤j≤n)

答:算法名为Add_Mt(),参数为A,B,C。

Add_Mt(A, B, C)

{

for (i=1; i<=m; i++)

for (j=1; j<=n; j++)

C[i][j] = A[i][j] + B[i][j];

}

第5章习题解答(此处树得高度不计算根节点)

一、填空

1.结点数为7得二叉树得高度最矮就是 2 ,最高就是 6 。

2.给定二叉树得结点数,要使树高为最大,那么该树应该就是单枝形状。

3.给定二叉树得结点数,要使树高为最矮,那么该树应该就是完全二叉树形状。

4.如果一棵满二叉树得深度为6,那么它共有 127 个结点,有 64 个叶结点。

5.有15个结点得二叉树,最少有 1 个叶结点,最多有 8 个叶结点。

6.由n个带权值得叶结点生成得哈夫曼树,最终共有 2n-1个结点。

,则左孩子得编号应该就是 2i ;如果有右孩子,则右孩子得编号应该就是 2i+1 。

8.若二叉树共有n个结点,采用二叉链表存储结构。那么在所有存储结点里,一共会有2n 个指针域,其中有n+1 个指针域就是空得。

9.深度为5得二叉树,至多有 31 个结点。

,它得右孩子一定排在它得右边。

二、选择

1.在所给得4棵二叉树中, C 不就是完全二叉树。

2.把一棵深度为3得左单支二叉树改造成完全二叉树时,要增添 D 个空结点。

3.设有一棵5个结点得二叉树,其先序遍历序列为:A-B-C-D-E,中序遍历序列为:B-A-D-C-E,那么它得后序遍历序列为 B 。Axqr5。

A.A-B-D-E-C

B.B-D-E-C-A

C.D-E-C-A-B

D.A-B-C-D-E

4.将一棵有50个结点得完全二叉树按层编号,那么编号为25得结点就是 B 。

A.无左、右孩子

B.有左孩子,无右孩子

5.深度为6得二叉树,最多可以有 A 个结点。

D.128

6.在一棵非空二叉树得中序遍历序列里,根结点得右边 D 结点。

A.只有左子树上得部分

B.只有左子树上得所有

C.只有右子树上得部分

D.只有右子树上得所有

7.在任何一棵二叉树得各种遍历序列中,叶结点得相对次序就是 A 。

A.不发生变化

B.发生变化

C.不能确定

D.以上都不对

8.权值为1、2、6、8得四个结点,所构造得哈夫曼树得带权路径长度就是 D 。

A.18

B.28

C.19

D.29

9.一棵二叉树度2得结点数为7,度1得结点数为6。那么它得叶结点数就是 C 。

A.6

B.7

C.8

D.9

10.在一棵二叉树中,第5层上得结点数最多就是 C 个。

A.8

B.15

C.16

D.32

三、问答

1.试问满二叉树与完全二叉树之间有何关系?

答:由满二叉树与完全二叉树得定义可知,满二叉树一定就是一棵完全二叉树,但完全二叉树却不一定就是一棵满二叉树。如果一棵二叉树不就是完全二叉树,那么它绝对不可能就是一棵满二叉树。这就就是满二叉树与完全二叉树之间得关系。lyl9W。

2. 请画出由3个结点构成得所有二叉树,它们得高度分别就是多少?

答:大小为3得不同得二叉树共有5种,如下图所示。

其中,4棵树得高度为2,1棵树得高度为1。

3.一棵高度为3得满二叉树有多少个叶结点?有多少个度为2得结点?总共有多少个结点?

答:有23=8个叶结点,有度为2得结点23-1=7个,总共有23+1-1=24-1=15个结点。

4.有人说,任何一棵非空满二叉树,它得叶结点数等于其分支结点数加1。这样得一个结论正确吗?请说明理由。(提示:利用性质5-3)

答:在我们介绍得二叉树性质中,只有性质5-3就是涉及叶结点数与(度为2得)分支结点数得关系得。对于满二叉树来说,所有得分支结点都就是度为2得结点。因此,正好可以直接利用性质5-3得出所需要得结论。所以,此人说得结论就是完全正确得。

5.有人说,有一棵结点数为n>1得二叉树,只包含有一个叶结点。这可能吗?如果可能得话,这样一棵二叉树应该就是个什么样子呢?

答:这就是完全可能得,这种二叉树就是从根结点开始只有左子树,或只有右子树得单支二叉树,如图所示。

6.试问,什么样得二叉树其先序遍历序列与中序遍历序列相同?

答:先序遍历序列与中序遍历序列相同得二叉树,或就是空二叉树,或就是任一结点都没有左孩子得非空二叉树。

7.分别写出如图5-32所示二叉树得先序、中序、后序遍历序列。

图5-32 二叉树示例

答:先序遍历序列为:A-B-C-D-F-G-H-E,中序遍历序列为:B-A-D-G-F-H-C-E,后序遍历序列为:B-G-H-F-D-E-C-A。

四、应用

1.对一个二叉树进行顺序存储,各结点得编号及数据如表所示:

编号i 1 2 3 4 5 7 10 11 数据x A B C D E F G H 试画出对应得二叉树,并给出先序、中序、后序遍历该二叉树后,所得到得各种结点序列。

答:对应得二叉树如图所示。

其先序遍历序列就是:A-B-D-E-G-H-C-F;中序遍历序列就是:D-B-G-E-H-A-C-F;后许遍历序列就是:D-G-H-E-B-F-C-A。

2.已知中序遍历序列为:A-B-C-E-F-G-H-D,后序遍历序列为:A-B-F-H-G-E-D-C。试画出这棵二叉树。

答:这棵二叉树如应用题2答案图所示。

3.已知前序遍历序列为:A-B-C-D-E-F,中序遍历序列为:C-B-A-E-D-F。试画出这棵二叉树。

答:这棵二叉树如应用题3答案图所示。

4.若一棵二叉树得左、右子树均有3个结点,其左子树得先序遍历序列与中序遍历序列相同,右子树得中序遍历序列与后序遍历序列相同。请画出这棵二叉树。

答:这棵二叉树如应用题4答案图所示。

5.理解算法5-10。在图5-25(b)得基础上,进行下一次组合。试给出第2次组合后数组得情形,以及那时二叉树得样子。

答:第2次组合后数组得情形如下图(a)所示,那时二叉树得样子如下图(b)所示。

6.权值序列为:10、16、20、6、30、24,请用图示来表达构造一棵哈夫曼树得全过程。答:构造这棵哈夫曼树得全过程如下所示。

7.一棵有11个结点得二叉树得顺序存储情况如表所示,序号3得结点就是根结点。画出

序号 1 2 3 4 5 6 7 8 9 10 11 Lchild 6 ^ 7 ^ 8 ^ 5 ^ 2 ^ ^ Data M F A K B L C R D S E Rchild ^ ^ ^ 9 ^ 10 4 11 ^ ^ ^ 答:二叉树如图所示,先序遍历序列为:A-C-B-R-S-E-D-F-M-L-K,中序遍历序列

运筹学试题及答案

运筹学A卷) 一、单项选择题(从下列各题四个备选答案中选出一个正确答案,答案选错或未选者,该题不得分。每小题1分,共10分) 1.线性规划具有唯一最优解就是指 A.最优表中存在常数项为零 B.最优表中非基变量检验数全部非零 C.最优表中存在非基变量的检验数为零 D.可行解集合有界 2.设线性规划的约束条件为 则基本可行解为 A.(0, 0, 4, 3) B.(3, 4, 0, 0) C.(2, 0, 1, 0) D.(3, 0, 4, 0) 3.则 A.无可行解 B.有唯一最优解medn C.有多重最优解 D.有无界解 4.互为对偶的两个线性规划, 对任意可行解X 与Y,存在关系 A.Z > W B.Z = W C.Z≥W D.Z≤W 5.有6 个产地4个销地的平衡运输问题模型具有特征 A.有10个变量24个约束

B.有24个变量10个约束 C.有24个变量9个约束 D.有9个基变量10个非基变量 6、下例错误的说法就是 A.标准型的目标函数就是求最大值 B.标准型的目标函数就是求最小值 C.标准型的常数项非正 D.标准型的变量一定要非负 7、m+n-1个变量构成一组基变量的充要条件就是 A.m+n-1个变量恰好构成一个闭回路 B.m+n-1个变量不包含任何闭回路 C.m+n-1个变量中部分变量构成一个闭回路 D.m+n-1个变量对应的系数列向量线性相关 8.互为对偶的两个线性规划问题的解存在关系 A.原问题无可行解,对偶问题也无可行解 B.对偶问题有可行解,原问题可能无可行解 C.若最优解存在,则最优解相同 D.一个问题无可行解,则另一个问题具有无界解 9、有m个产地n个销地的平衡运输问题模型具有特征 A.有mn个变量m+n个约束…m+n-1个基变量 B.有m+n个变量mn个约束 C.有mn个变量m+n-1约束 D.有m+n-1个基变量,mn-m-n-1个非基变量 10.要求不超过第一目标值、恰好完成第二目标值,目标函数就是

行程问题典型例题及答案详解

行程问题典型例题及答案详解 行程问题是小学奥数中的重点和难点,也是西安小升初考试中的热点题型,纵观近几年试题,基本行程问题、相遇追及、多次相遇、火车、流水、钟表、平均速度、发车间隔、环形跑道、猎狗追兔等题型比比皆是,以下是一些上述类型经典例题(附答案详解)的汇总整理,有疑问可以直接联系我。 例1:一辆汽车往返于甲乙两地,去时用了4个小时,回来时速度提高了1/7,问:回来用了多少时间? 分析与解答:在行程问题中,路程一定,时间与速度成反比,也就是说速度越快,时间越短。设汽车去时的速度为v千米/时,全程为s千米,则:去时,有s÷v=s/v=4,则 回来时的时间为:,即回来时用了3.5小时。评注:利用路程、时间、速度的关系解题,其中任一项固定,另外两项都有一定的比例关系(正比或反比)。 例2:A、B两城相距240千米,一辆汽车计划用6小时从A城开到B城,汽车行驶了一半路程,因故障在中途停留了30分钟,如果按原计划到达B城,汽车在后半段路程时速度应加快多少? 分析:对于求速度的题,首先一定是考虑用相应的路程和时间相除得到。 解答:后半段路程长:240÷2=120(千米),后半段用时为:6÷2-0.5=2.5(小时),后半段行驶速度应为:120÷2.5=48(千米/时),原计划速度为:240÷6=40(千米/时),汽车在后半段加快了:48-40=8(千米/时)。 答:汽车在后半段路程时速度加快8千米/时。 例3:两码头相距231千米,轮船顺水行驶这段路程需要11小时,逆水每小时少行10千米,问行驶这段路程逆水比顺水需要多用几小时? 分析:求时间的问题,先找相应的路程和速度。 解答:轮船顺水速度为231÷11=21(千米/时),轮船逆水速度为21-10=11(千米/时),逆水比顺水多需要的时间为:21-11=10(小时) 答:行驶这段路程逆水比顺水需要多用10小时。

运筹学习题精选

运筹学习题精选

运筹学习题精选 第一章线性规划及单纯形法 选择 1.在线性规划模型中,没有非负约束的变量称为……………………………………………………( C ) A.多余变量 B.松弛变量 C.自由变量 D.人工变量 2.约束条件为0 AX的线性规划问题的可行解集 b ,≥ =X 是………………………………………( B ) A.补集 B.凸集 C.交集 D.凹集 3.线性规划问题若有最优解,则一定可以在可行域的( C)上达到。 A.内点 B.外点 C.顶点 D.几何点 4.线性规划标准型中bi(i=1,2,……m)必须是…………………………………………………( B) A.正数 B.非负数 C.无约束 D.非零的 5.线性规划问题的基本可行解X对应于可行域D 的………………………………………………( D) A.外点 B.所有点 C.内点 D.极点 6.基本可行解中的非零变量的个数小于约束条件数时,该问题可求得……………………………( B ) A.基本解 B.退化解 C.多重解 D.无解 7.满足线性规划问题全部约束条件的解称为…………………………………………………( C ) A.最优解 B.基本解 C.可行解 D.多重解 8.线性规划一般模型中,自由变量可以用两个非负变量的(B )代换。 A.和 B.差 C.积 D.商 9.当满足最优检验,且检验数为零的变量的个数大于基变量的个数时,可求得………………………( A ) 第 2 页共 30 页

第 3 页 共 30 页 A .多重解 B .无解 C .正则解 D .退化解 10.若线性规划问题有最优解,则必定存在一个( D )是最优解。 A .无穷多解 B. 基解 C. 可行解 D. 基可行解 填空 计算 1. 某厂生产甲、乙、丙三种产品,已知有关数据如下表所示,求使该厂获利最大的生产计划。 2. 目标函数为max Z =28x4+x5+2x6,约束形式为“≤”,且x1,x2,x3为松弛变量, 表中的解代入目标函数中得Z=14,求出a~g 的值,并判断→j c 0 0 0 28 1 2 B C 基 b 1x 2x 3x 4x 5x 6x 2 6x A 3 0 -14/3 0 1 1 0 2x 5 6 D 2 0 5/2 0 28 4x 0 0 E F 1 0 0 j j z c - B C 0 0 -1 G

模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断

实验报告 课程名称操作系统原理实验名称虚拟页式管理 姓名学号专业班级网络 实验日期成绩指导教师赵安科 (①实验目的②实验原理③主要仪器设备④实验内容与步骤⑤实验数据记录与处理⑥实验结果与分析⑦问题建议) 实验二模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断 1.内容:模拟请求页式存储管理中硬件的地址转换和缺页中断处理 2.思想: 装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1” 3.要求及方法: ①设计一个地址转换程序来模拟硬件的地址转换和缺页中断。当访问的页在主存时则形成绝对地址,但不去模拟指令的执行,可以输出转换后的绝对地址来表示一条指令已执行完成。当访问的页不在主存中时,则输出“*页号”来表示硬件产生了一次缺页中断。模拟地址转换流程见图1。 ②编制一个FIFO页面调度程序;FIFO页面调度算法总是先调出作业中最先进入主存中的哪一页。因此可以用一个数组来表示(或构成)页号队列。数组中每个元素是该作业已在主存中的页面号,假定分配给作业的页架数为m,且该作业开始的m页已装入主存,则数组可由m个元素构成。 P[0],P[1],P[2],…,P[m-1] 它们的初值为P[0]:=0,P[1]:=1,P[2]:=2,…,P[m-1]:=m-1 用一指针K指示当要调入新页时应调出的页在数组中的位置,K的初值为“0”,当产生缺页

中断后,操作系统总是选择P[K]所指出的页面调出,然后执行: P[K]:=要装入的新页页号 K :=(k+1)mod m 在实验中不必实际地启动磁盘执行调出一页和装入一页的工作,而用输出“OUT 调出的页号”和“IN 要装入的新页页号”来模拟一次调出和装入过程,模拟程序的流程图见附图1。 按流程控制过程如下: 提示:输入指令的页号和页内偏移和是否存指令?? ? 0 1非存指令存指令,若d 为-1则结束,否则进 入流程控制过程,得P 1和d ,查表在主存时,绝对地址=P 1×1024+d ③ 假定主存中页架大小为1024个字节,现有一个共7页的作业,其副本已在磁盘上。系统为该作业分配了4个页架,且该作业的第0页至第3页已装入内存,其余3页未装入主 依次执行上述指令调试你所设计的程序(仅模拟指令的执行,不考虑序列中具体操作的执行)。

运筹学典型考试试题及答案

二、计算题(60分) 1、已知线性规划(20分) MaxZ=3X1+4X2 X1+X2≤5 2X1+4X2≤12 3X1+2X2≤8 X1,X2≥0 其最优解为: 基变量X1X2X3X4X5 X33/2 0 0 1 -1/8 -1/4 X25/2 0 1 0 3/8 -1/4 X1 1 1 0 0 -1/4 1/2 σj 0 0 0 -3/4 -1/2 1)写出该线性规划的对偶问题。 2)若C2从4变成5,最优解是否会发生改变,为什么? 3)若b2的量从12上升到15,最优解是否会发生变化,为什么? 4)如果增加一种产品X6,其P6=(2,3,1)T,C6=4该产品是否应该投产?为什么?解: 1)对偶问题为 Minw=5y1+12y2+8y3 y1+2y2+3y3≥3 y1+4y2+2y3≥4 y1,y2≥0 2)当C2从4变成5时, σ4=-9/8 σ5=-1/4 由于非基变量的检验数仍然都是小于0的,所以最优解不变。 3)当若b2的量从12上升到15 X=9/8 29/8 1/4 由于基变量的值仍然都是大于0的,所以最优解的基变量不会发生变化。 4)如果增加一种新的产品,则 P6’=(11/8,7/8,-1/4)T σ6=3/8>0 所以对最优解有影响,该种产品应该生产 2、已知运输问题的调运和运价表如下,求最优调运方案和最小总费用。(共15分)。 B1B2B3产量销地 产地 A1 5 9 2 15 A2 3 1 7 11 A3 6 2 8 20 销量18 12 16 解:初始解为

计算检验数 由于存在非基变量的检验数小于0,所以不是最优解,需调整 调整为: 重新计算检验数 所有的检验数都大于等于0,所以得到最优解 3、某公司要把4个有关能源工程项目承包给4个互不相关的外商投标者,规定每个承包商只能且必须承包一个项目,试在总费用最小的条件下确定各个项目的承包者,总费用为多少?各承包商对工程的报价如表2所示: (15分) 项目 投标者 A B C D 甲 15 18 21 24 乙 19 23 22 18 丙 26 17 16 19 丁 19 21 23 17 答最优解为: X= 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 总费用为50 4. 考虑如下线性规划问题(24分) B 1 B 2 B 3 产量/t A 1 15 15 A 2 11 11 A 3 18 1 1 20 销量/t 18 12 16 B 1 B 2 B 3 产量/t A 1 5 13 0 15 A 2 -2 0 0 11 A 3 0 0 20 销量/t 18 12 16 B 1 B 2 B 3 产量/t A 1 15 15 A 2 11 11 A 3 7 12 1 20 销量/t 18 12 16 B 1 B 2 B 3 产量/t A 1 5 13 0 15 A 2 0 2 2 11 A 3 0 0 0 20 销量/t 18 12 16

五年级行程问题经典例题

行程问题(一) 专题简析: 行程应用题是专门讲物体运动的速度、时间、路程三者关系的应用题。行程问题的主要数量关系是:路程=速度×时间。知道三个量中的两个量,就能求出第三个量。 例1 甲、乙两车同时从东、西两地相向开出,甲车每小时行56千米,乙车每小时行48千米。两车在距中点32千米处相遇,东、西两地相距多少千米 分析与解答从图中可以看出,两车相遇时,甲车比乙车多行了32×2=64(千米)。两车同时出发,为什么甲车会比乙车多行64千米呢因为甲车每小时比乙车多行56-48=8(千米)。64里包含8个8,所以此时两车各行了8小时,东、西两地的路程只要用(56+48)×8就能得出。 32×2÷(56-48)=8(小时) (56+48)×8=832(千米) 答:东、西两地相距832千米。 练习一 》 1,小玲每分钟行100米,小平每分钟行80米,两人同时从学校和少年宫出发,相向而行,并在离中点120米处相遇。学校到少年宫有多少米 2,一辆汽车和一辆摩托车同时从甲、乙两地相对开出,汽车每小时行40千米,摩托车每小时行65千米,当摩托车行到两地中点处时,与汽车还相距75千米。甲、乙两地相距多少千米

例2 快车和慢车同时从甲、乙两地相向开出,快车每小时行40千米,经过3小时,快车已驶过中点25千米,这时快车与慢车还相距7千米。慢车每小时行多少千米 分析与解答快车3小时行驶40×3=120(千米),这时快车已驶过中点25千米,说明甲、乙两地间路程的一半是120-25=95(千米)。此时,慢车行了95-25-7=63(千米),因此慢车每小时行63÷3=21(千米)。 [ (40×3-25×2-7)÷3=21(千米) 答:慢车每小时行21千米。 练习二 1,兄弟二人同时从学校和家中出发,相向而行。哥哥每分钟行120米,5分钟后哥哥已超过中点50米,这时兄弟二人还相距30米。弟弟每分钟行多少米 2,汽车从甲地开往乙地,每小时行32千米。4小时后,剩下的路比全程的一半少8千米,如果改用每小时56千米的速度行驶,再行几小时到达乙地 & 例3 甲、乙二人上午8时同时从东村骑车到西村去,甲每小时比乙快6千米。中午12时甲到西村后立即返回东村,在距西村15千米处遇到乙。求东、西两村相距多少千米 分析与解答二人相遇时,甲比乙多行15×2=30(千米),说明二人已行30÷6=5(小时),上午8时至中午12时是4小时,所以甲的速度是15÷(5-4)=15(千米/小时)。 因此,东西两村的距离是15×(5-1)=60(千米)

运筹学试题

运筹学试题 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

运筹学试题 一、填空题(本大题共8小题,每空2分,共20分) 1.线性规划闯题中,如果在约束条件中出现等式约束,我们通常用增加___的方法来产生初始可行基。 2.线性规划模型有三种参数,其名称分别为价值系数、___和___。 3.原问题的第1个约束方程是“=”型,则对偶问题相应的变量是___变量。 4.求最小生成树问题,常用的方法有:避圈法和 ___。 5.排队模型M/M/2中的M,M,2分别表示到达时间为___分布,服务时间服从负指数分布和服务台数为2。 6.如果有两个以上的决策自然条件,但决策人无法估计各自然状态出现的概率,那么这种决策类型称为____型决策。 7.在风险型决策问题中,我们一般采用___来反映每个人对待风险的态度。 8.目标规划总是求目标函数的___信,且目标函数中没有线性规划中的价值系数,而是在各偏差变量前加上级别不同的____。 二、单项选择题(本大题共l0小题,每小题3分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。多选无分。 9.使用人工变量法求解极大化线性规划问题时,当所有的检验数在基变量中仍含有非零的人工变量,表明该线性规划问题【】 A.有唯一的最优解 B.有无穷多最优解 C.为无界解 D.无可行解 10.对偶单纯形法解最大化线性规划问题时,每次迭代要求单纯形表中【】 A.b列元素不小于零 B.检验数都大于零 C.检验数都不小于零 D.检验数都不大于零

11.已知某个含10个结点的树图,其中9个结点的次为1,1,3,1,1,1,3,1,3,则另一个结点的次为【】 A.3 B.2 C.1 D.以上三种情况均有可能 12.如果要使目标规划实际实现值不超过目标值。则相应的偏离变量应满足【】 13.在运输方案中出现退化现象,是指数字格的数目【】 A.等于 m+n B.等于m+n-1 C.小于m+n-1 D.大于m+n-1 14.关于矩阵对策,下列说法错误的是【】 A.矩阵对策的解可以不是唯一的 C.矩阵对策中,当局势达到均衡时,任何一方单方面改变自己的策略,都将意味着自己更少的赢得和更大的损失 D.矩阵对策的对策值,相当于进行若干次对策后,局中人I的平均赢得或局中人Ⅱ的平均损失值 【】 A.2 8.—l C.—3 D.1 16.关于线性规划的原问题和对偶问题,下列说法正确的是【】 A.若原问题为元界解,则对偶问题也为无界解

运筹学试题及答案汇总

3)若问题中 x2 列的系数变为(3,2)T,问最优解是否有变化; 4)c2 由 1 变为 2,是否影响最优解,如有影响,将新的解求出。 Cj CB 0 0 Cj-Zj 0 4 Cj-Zj 3 4 Cj-Zj 最优解为 X1=1/3,X3=7/5,Z=33/5 2对偶问题为Minw=9y1+8y2 6y1+3y2≥3 3y1+4y2≥1 5y1+5y2≥4 y1,y2≥0 对偶问题最优解为 y1=1/5,y2=3/5 3 若问题中 x2 列的系数变为(3,2)T 则P2’=(1/3,1/5σ2=-4/5<0 所以对最优解没有影响 4)c2 由 1 变为2 σ2=-1<0 所以对最优解没有影响 7. 求如图所示的网络的最大流和最小截集(割集,每弧旁的数字是(cij , fij )。(10 分) V1 (9,5 (4,4 V3 (6,3 T 3 XB X4 X5 b 9 8 X1 6 3 3 X4 X3 1 8/5 3 3/5 3/5 X1 X3 1/3 7/5 1 0 0 1 X2 3 4 1 -1 4/5 -11/5 -1/3 1 - 2 4 X 3 5 5 4 0 1 0 0 1 0 0 X4 1 0 0 1 0 0 1/3 -1/ 5 -1/5 0 X5 0 1 0 -1 1/5 -4/5 -1/3 2/5 -3/5 VS (3,1 (3,0 (4,1 Vt (5,3 V2 解: (5,4 (7,5 V4 V1 (9,7 (4,4 V3 (6,4 (3,2 Vs (5,4 (4,0 Vt (7,7 6/9 V2 最大流=11 (5,5 V4 8. 某厂Ⅰ、Ⅱ、Ⅲ三种产品分别经过 A、B、C 三种设备加工。已知生产单位各种产品所需的设备台时,设备的现有加工能力及每件产品的预期利润见表:ⅠⅡⅢ设备能力(台.h A 1 1 1 100 B 10 4 5 600 C 2 2 6 300 单

七年级行程问题经典例题

第十讲:行程问题分类例析 主讲:何老师 行程问题有相遇问题,追及问题,顺流、逆流问题,上坡、下坡问题等.在运动形式上分直线运动及曲线运用(如环形跑道). 相遇问题是相向而行.相遇距离为两运动物体的距离和.追及问题是同向而行,分慢的在快的前面或慢的先行若干时间,快的再追及,追及距离慢快S S S +=.顺逆流、顺风逆风、上下坡应注意运动方向,去时顺流, 回时则为逆流. 一、相遇问题 例1:两地间的路程为360km ,甲车从A 地出发开往B 地,每小时行72km ;甲车出发25分钟后,乙车从B 地出发开往A 地,每小时行使48km ,两车相遇后,各自按原来速度继续行使,那么相遇以后,两车相距100km 时,甲车从出发开始共行驶了多少小时? 分析:利用相遇问题的关系式(相遇距离为两运动物体的距离和)建立方程. 解答:设 甲车共 行使了 xh ,则乙车行使了h x )(60 25-.(如图1) 依题意,有72x+48)(60 25-x =360+100,

解得x=4. 因此,甲车共行使了4h. 说明:本题两车相向而行,相遇后继续行使100km ,仍属相遇问题中的距离,望读者仔细体会. 例2:一架战斗机的贮油量最多够它在空中飞行 4.6h,飞机出航时顺风飞行,在静风中的速度是575km/h,风速25 km/h,这架飞机最多能飞出多少千米就应返回? 分析:列方程求解行程问题中的顺风逆风问题. 顺风中的速度=静风中速度+风速 逆风中的速度=静风中速度-风速 解答:解法一:设这架飞机最远飞出xkm 就应返回. 依题意,有6425 57525575.=-++x x 解得:x=1320. 答:这架飞机最远飞出1320km 就应返回. 解法二: 设飞机顺风飞行时间为th. 依题意,有(575+25)t=(575-25)(4.6-t), 解得:t=2.2.

运筹学例题

某昼夜服务的公交线路 解:设x i 表示第i班次时开始上班的司机和乘务人员数,这样我们建立如下的数学模型。目标函数:Min x1 + x2 + x3 + x4 + x5 + x6 s.t. x1 + x6≥60 x1 + x2≥70 x2 + x3≥60 x3 + x4≥50 x4 + x5≥20 x5 + x6≥30 x1,x2,x3,x4,x5,x6 ≥0 解得50,20,50,0,20,10(x1到x6)一共需要150人 一家中型的百货商场 解:设x i ( i = 1,2,…,7)表示星期一至日开始休息的人数,这样我们建立如下的数学模型。目标函数:Min x1 + x2 + x3 + x4 + x5 + x6 + x7 s.t. x1 + x2 + x3 + x4 + x5 ≥28 x2 + x3 + x4 + x5 + x6≥15 x3 + x4 + x5 + x6 + x7≥24 x4 + x5 + x6 + x7 + x1≥25 x5 + x6 + x7 + x1 + x2≥19 x6 + x7 + x1 + x2 + x3≥31 x7 + x1 + x2 + x3 + x4≥28 x1,x2,x3,x4,x5,x6,x7 ≥0 解得12.0.11.5.0.8.0(x1到x7) 最小值36 某工厂要做100套钢架 设x1,x2,x3,x4,x5 分别为5 种方案下料的原材料根数。这样我们建立如下的数学模型。 目标函数:Min x1 + x2 + x3 + x4 + x5 s.t. x1 + 2x2 +x4≥100 2x3+2x4 +x5≥100 3x1+x2+2x3+3x5≥100 x1,x2,x3,x4,x5≥0 解得30,10,0,50,0 只需要90根原料造100钢架某工厂要用三种原料1、2、3 设设x ij 表示第i 种(甲、乙、丙)产品中原料j 的含量。 目标函数:Max z = -15x11+25x12+15x13-30x21+10x22-40x31-10x33 s.t. 0.5 x11-0.5 x12 -0.5 x13≥0 -0.25x11+0.75x12 -0.25x13≤0 0.75x21-0.25x22 -0.25x23≥0 -0.5 x21+0.5 x22 -0.5 x23≤0 x11+x21 +x31≤100 x12+x22 +x32≤100 x13+x23+x33≤60 x ij≥0 , i = 1,2,3; j = 1,2,3 解得x11=100,x12=50,x13=50原料分别为第1种100 第2种50 第3种50 资源分配 解:将问题按工厂分为三个阶段,甲、乙、丙三个厂分别编号为1、2、3厂。设sk= 分配给第k个厂至第3个厂的设备台数(k=1、2、3)。xk=分配给第k个工厂的设备台数。 已知s1=5, 并有S2=T1(s1,x1)=s1-x1,S3=T2(s2,x2)=s2-x2从Sk与Xk的定义,可知s3=x3 以下我们从第三阶段开始计算。Maxr3(s3,x3)=r3(s3,x3)即F3(s3)= Maxr3(s3,x3)=r3(s3,x3). 第二阶段F2(s2)=max[r2(s2,x2)+f3(s3)]第一阶段当s1=5时最大盈利为f1(5)=max[r1(5,x1)+f2(5-x1)] 得出2个方案⑴分配给甲0台乙0台丙3台⑵分配甲2台乙2台丙1台,他们的总盈利值都是21. 背包 设Sk=分配给第k种咨询项目到第四种咨询项目的所有客户的总工作日Xk=在第k种咨询项目中处理客户的数量已知s1=10,有S2=T1(s1,x1)=s1-x1. S3=T2(s2,x2)=s2-3x2. S4=T3(s3,x3)=s3-4x3,第四阶段F4(s4)=maxr4(s4,x4)=r4(s4,[s4/7])第三阶段F3(s3)=max[r3(s3,x3)+f4(s3-4x3)]第二阶段F2(s2)=max[r2(s2,x2)+f3(s2-3x2)]第一阶段已知s1=10,又因s2=s1-x1有F1(10)=max[r1(10,x1)+f2(10-x1)] 综上当x1*=0,x2*=1,x3*=0,x4*=1,最大盈利为28 京城畜产品 解:设:0--1变量xi = 1 (Ai 点被选用)或0 (Ai 点没被选用)。这样我们可建立如下的数学模型:Max z =36x1+40x2+50x3+22x4+20x5+30x6+25x7+48x8+58x9+61x10 s.t. 100x1+120x2+150x3+80x4+70x5+90x6+80x7+140x8+160x9+180x10 ≤720 x1 + x2 + x3 ≤2 x4 + x5 ≥1 x6 + x7 ≥1 x8 + x9 + x10 ≥2 xi≥0 且xi为0--1变量,i = 1,2,3,……,10 函数值245 最优解1,1,0,0,1,1,0,0,1,1(x1到x10的解) 高压容器公司

五年级行程问题典型练习题

行程问题(一) 【知识分析】 相遇是行程问题的基本类型,在相遇问题中可以这样求全程:速度和×时间=路程,今天,我们学校这类问题。 【例题解读】 例1客车和货车同时分别从两地相向而行,货车每小时行85千米,客车每小时行90千米,两车相遇时距全程中点8千米, 两地相距多少千米? 【分析】根据题意,两车相遇时货车行了全程的一半-8千米,客车行了全程的一半+8千米,也就是说客车比货车多行了8×2=16千米,客车每小时比货车多行90-85=5千米。那么我们先求客车和货车两车经过多少小时在途中相遇,然后再求出总路程。 (1)两车经过几小时相遇?8×2÷(90-85)=3.2小时 (2)两地相距多少千米?(90+85)×3.2=560(千米) 例2小明和小丽两个分别从两地同时相向而行,8小时可以相遇,如果两人每小时多少行1.5千米,那么10小时相遇,两地 相距多少千米? 【分析】两人每小时多少行1.5千米,那么10小时相遇,如果以这样的速度行8小时,这时两个人要比原来少行1.5×2×8=24(千米)这24千米两人还需行10-8=2(小时),那么减速后的速度和是24÷2=12(千米)容易求出两地的距离 1.5×2×8÷(10-8)×=120千米 【经典题型练习】

1、客车和货车分别从两地同时相向而行,2.5小时相遇,如果两车 每小时都比原来多行10千米,则2小时就相遇,求两地的距离? 2、在一圆形的跑道上,甲从a点,乙从b点同时反方向而行,8 分钟后两人相遇,再过6分钟甲到b点,又过10分钟两人再次相遇,则甲环形一周需多少分钟?

【知识分析】 两车从两地同时出发相向而行,第一次相遇合起来走一个全程,第二次相遇走了几个全程呢?今天,我们学习这类问题 【例题解读】 例 a、b两车同时从甲乙两地相对开出,第一次在离甲地95千米处相遇,相遇后两车继续以原速行驶,分别到达对方站点后立即返回,在离乙地55千米处第二次相遇,求甲乙两地之间的距离是多少千米? 【分析】a、b两车从出发到第一次相遇合走了一个全程,当两年合走了一个全程时,a车行了95千米 从出发到第二次相遇,两车一共行了三个全程,a车应该行了95×3=285(千米)通过观察,可以知道a车行了一个全程还多55千米,用285千米减去55千米就是甲乙两地相距的距离 95×3—55=230千米 【经典题型练习】 1、甲乙两车同时从ab两地相对开出,第一次在离a地75千米相 遇,相遇后两辆车继续前进,到达目的地后立即返回,第二次相遇在离b地45千米处,求a、b两地的距离 2、客车和货车同时从甲、乙两站相对开出,第一次相遇在距乙站 80千米的地方,相遇后两车仍以原速前进,在到达对方站点后立即沿原路返回,两车又在距乙站82千米处第二次相遇,甲乙两站相距多少千米?

运筹学习题答案

第一章习题 1.思考题 (1)微分学求极值的方法为什么不适用于线性规划的求解? (2)线性规划的标准形有哪些限制?如何把一般的线性规划化为标准形式? (3)图解法主要步骤是什么?从中可以看出线性规划最优解有那些特点? (4)什么是线性规划的可行解,基本解,基可行解?引入基本解和基可行解有什么作用? (5)对于任意基可行解,为什么必须把目标函数用非基变量表示出来?什么是检验数?它有什么作用?如何计算检验数? (6)确定换出变量的法则是什么?违背这一法则,会发生什么问题? (7)如何进行换基迭代运算? (8)大M法与两阶段法的要点是什么?两者有什么共同点?有什么区别? (9)松弛变量与人工变量有什么区别?试从定义和处理方式两方面分析。 (10)如何判定线性规划有唯一最优解,无穷多最优解和无最优解?为什么? 2.建立下列问题的线性规划模型: (1)某厂生产A,B,C三种产品,每件产品消耗的原料和设备台时如表1-18所示: 润最大的模型。 (2)某公司打算利用具有下列成分(见表1-19)的合金配制一种新型合金100公斤,新合金含铅,锌,锡的比例为3:2:5。 如何安排配方,使成本最低? (3)某医院每天各时间段至少需要配备护理人员数量见表1-20。

表1-20 假定每人上班后连续工作8小时,试建立使总人数最少的计划安排模型。能否利用初等数学的视察法,求出它的最优解? (4)某工地需要30套三角架,其结构尺寸如图1-6所示。仓库现有长6.5米的钢材。如何下料,使消耗的钢材最少? 图1-6 3. 用图解法求下列线性规划的最优解: ?????? ?≥≤+-≥+≥++=0 ,425.134 1 2 64 min )1(21212 12121x x x x x x x x x x z ?????? ?≥≤+≥+-≤++=0 ,82 5 1032 44 max )2(21212 12121x x x x x x x x x x z ????? ????≥≤≤-≤+-≤++=0 ,6 054 4 22232 96 max )3(2122 1212121x x x x x x x x x x x z ??? ??≥≤+-≥+ +=0,1 12 34 3 max )4(2 12 12121x x x x x x x x z

页式虚拟存储管理中地址转换和缺页中断实验参考2

页式虚拟存储管理中地址转换和缺页中断 一.实验目的 (1)深入了解存储管理如何实现地址转换。 (2)进一步认识页式虚拟存储管理中如何处理缺页中断。 二.实验内容 编写程序完成页式虚拟存储管理中地址转换过程和模拟缺页中断的处理。 三.实验原理 页式存储管理把内存分割成大小相等位置固定的若干区域,叫内存页面,内存的分配以“页”为单位,一个程序可以占用不连续的页面,逻辑页面的大小和内存页面的大小相同,内外存的交换也以页为单位进行,页面交换时,先查询快表,若快表中找不到所需页面再去查询页表,若页表中仍未找到说明发生了缺页中断,需先将所需页面调入内存再进行存取。 四.实验部分源程序 #define size 1024//定义块的大小,本次模拟设为1024个字节。 #include "stdio.h" #include "string.h" #include struct plist { int number; //页号 int flag; //标志,如为1表示该页已调入主存,如为0则还没调入。 int block; //主存块号,表示该页在主存中的位置。 int modify; //修改标志,如在主存中修改过该页的内容则设为1,反之设为0 int location; //在磁盘上的位置 }; //模拟之前初始化一个页表。 struct plist p1[7]={{0,1,5,0,010},{1,1,8,0,012},{2,1,9,0,013},{3,1,1,0,021},{4,0,-1,0,022},{5,0,-1,0,023},{6, 0,-1,0,125}}; //命令结构,包括操作符,页号,页内偏移地址。 struct ilist { char operation[10]; int pagenumber; int address; }; //在模拟之前初始化一个命令表,通过程序可以让其顺序执行。 struct ilist p2[12]={{"+",0,72},{"5+",1,50},{"*",2,15},{"save",3,26},

运筹学例题解析

(一)线性规划建模与求解 B.样题:活力公司准备在5小时内生产甲、乙两种产品。甲、乙两种产品每生产1 单位分别消耗2小时、1小时。又根据市场需求信息,乙产品的产量应该至少是甲产品产量的3倍。已知甲、乙两种产品每销售1单位的利润分别为3百元和1百元。请问:在5小时内,甲、乙两种产品各生产多少单位,才能够使得总销售利润最大 要求:1、建立该问题的线性规划模型。 2、用图解法求出最优解和最大销售利润值,并写出解的判断依据。如果不存在最优解,也请说明理由。 解:1、(1)设定决策变量: 设甲、乙两种产品分别生产x 1 、x 2 单位 。 (2)目标函数: max z=2 x 1+x 2 (3)约束条件如下:1221 12 25..3,0+≤??≥??≥?x x s t x x x x 2、该问题中约束条件、目标函数、可行域和顶点见图1所示,其中可行域用阴影部分标记,不等式约束条件及变量约束要标出成立的方向,目标函数只须画出其中一条等值线, 结论:本题解的情形是: 无穷多最优解 ,理由: 目标函数等值线 z=2 x 1+x 2与约 束条件2 x 1+x 2≤5的边界平行 。甲、乙两种产品的最优产量分别为 (5,0)或(1,3)单位;最大销售利润值等于 5 百元。 (二)图论问题的建模与求解样题 A.正考样题(最短路问题的建模与求解,清华运筹学教材编写组第三版267-268页例 13)某企业使用一台设备,每年年初,企业都要做出决定,如果继续使用旧的,要付维修费;若购买一台新设备,要付购买费。但是变卖旧设备可以获得残值收入,连续使用1年、2年、3年、4年以上卖掉的设备残值分别为8万元、6万元、3万元和0万元。试制定一个5年的更新计划,使总支出最少。已知设备在各年的购买费与维修费如表2所示。要求:(1)建立某种图论模型;(2)求出最少总支出金额。

行程问题经典例题

8.如图3-1,甲和乙两人分别从一圆形场地的直径两端点同时开始以匀速按相反的方向绕此 圆形路线运动,当乙走了100米以后,他们第一次相遇,在甲走完一周前60米处又第二次 相遇.求此圆形场地的周长. 【分析与解】 注意观察图形,当甲、乙第一次相遇时,甲乙共走完 12圈的路程,当甲、乙第二次相遇时,甲乙共走完1+12=32 圈的路程. 所以从开始到第一、二次相遇所需的时间比为1:3,因而第二次相遇时乙行走的总路 程为第一次相遇时行走的总路程的3倍,即100×3=300米. 有甲、乙第二次相遇时,共行走(1圈-60)+300,为 32 圈,所以此圆形场地的周长为480米. 行程问题分类例析 欧阳庆红 行程问题有相遇问题,追及问题,顺流、逆流问题,上坡、下坡问题等.在运动形式上 分直线运动及曲线运用(如环形跑道). 相遇问题是相向而行.相遇距离为两运动物体的距离 和.追及问题是同向而行,分慢的在快的前面或慢的先行若干时间,快的再追 及,追及距离慢快S S S +=.顺逆流、顺风逆风、上下坡应注意运动方向,去时顺流,回时则为逆流. 一、相遇问题 例1:两地间的路程为360km ,甲车从A 地出发开往B 地,每小时行72km ;甲车出发25 分钟后,乙车从B 地出发开往A 地,每小时行使48km ,两车相遇后,各自按原来速度继续 行使,那么相遇以后,两车相距100km 时,甲车从出发开始共行驶了多少小时? 分析:利用相遇问题的关系式(相遇距离为两运动物体的距离和)建立方程.

解答:设甲车共行使了xh,则乙车行使了h x) ( 60 25 -.(如图1) 依题意,有72x+48) ( 60 25 - x=360+100, 解得x=4. 因此,甲车共行使了4h. 说明:本题两车相向而行,相遇后继续行使100km,仍属相遇问题中的距离,望读者仔细体会. 例2:一架战斗机的贮油量最多够它在空中飞行 4.6h,飞机出航时顺风飞行,在静风中的速度是575km/h,风速25 km/h,这架飞机最多能飞出多少千米就应返回? 分析:列方程求解行程问题中的顺风逆风问题. 顺风中的速度=静风中速度+风速 逆风中的速度=静风中速度-风速 解答:解法一:设这架飞机最远飞出xkm就应返回. 依题意,有6 4 25 575 25 575 . = - + + x x 解得:x=1320. 答:这架飞机最远飞出1320km就应返回. 解法二:设飞机顺风飞行时间为th. 依题意,有(575+25)t=(575-25)(4.6-t), 解得:t=2.2. (575+25)t=600×2.2=1320. 答:这架飞机最远飞出1320km就应返回. 说明:飞机顺风与逆风的平均速度是575km/h,则有6 4 575 2 . = x ,解得x=1322.5.错误原因在于飞机平均速度不是575km/h,而是) / (h km v v v v v x v x x 574 550 600 550 600 2 2 2 ≈ + ? ? = + ? = +逆 顺 逆 顺 逆 顺 例3:甲、乙两人在一环城公路上骑自行车,环形公路长为42km,甲、乙两人的速度分别为21 km/h、14 km/h. (1)如果两人从公路的同一地点同时反向出发,那么经几小时后,两人首次相遇? (2)如果两人从公路的同一地点同时同向出发,那么出发后经几小时两人第二次相遇? 分析:这是环形跑道的行程问题. 解答:(1)设经过xh两人首次相遇. 依题意,得(21+14)x=42, 解得:x=1.2. 因此,经过1.2小时两人首次相遇. (3)设经过xh两人第二次相遇. 依题意,得21x-14x=42×2, 图1

《运筹学》题库

运筹学习题库 数学建模题(5) 1、某厂生产甲、乙两种产品,这两种产品均需要A 、B 、C 三种资源,每种产品的资源消耗量及单位产品销售后所能获得的利润值以及这三种资源的储备如下表所示: 试建立使得该厂能获得最大利润的生产计划的线性规划模型,不求解。 解:设甲、乙产品的生产数量应为x1、x2,则x1、x2≥0,设z 是产品售后的总利润,则 max z =70x 1+120x 2 s.t. ????? ??≥≤+≤ +≤+0 300103200643604921212121x x x x x x x x , 2建立使利润最大的生产计划的数学模型,不求解。 解:设甲、乙两种产品的生产数量为x 1、x 2, 设z 为产品售后总利润,则max z= 4x 1+3x 2 s.t. ???????≥≤≤+≤+ ,50040005.253000222112121x x x x x x x 3、一家工厂制造甲、乙、丙三种产品,需要三种资源——技术服务、劳动力和行政管理。每种产品的资源消耗量、单位产品销售后所能获得的利润值以及这三种资源的储备量如下表所示:

建立使得该厂能获得最大利润的生产计划的线性规划模型,不求解。 解:建立线性规划数学模型: 设甲、乙、丙三种产品的生产数量应为x 1、x 2、x 3,则x 1、x 2、x 3≥0,设z 是产品售后的总利润,则 max z =10x 1+6x 2+4x 3 s.t. ???????≥≤++≤++≤++0 3006226005410100321321321321x x x x x x x x x x x x ,, 4、一个登山队员,他需要携带的物品有:食品、氧气、冰镐、绳索、帐篷、照相器材、通 信器材等。每种物品的重量合重要性系数如表所示。设登山队员可携带的最大重量为25kg,试建立队员所能携带物品最大量的线性规划模型,不求解。 解:引入0—1变量x i , x i =1表示应携带物品i ,,x i =0表示不应携带物品I ?? ?==≤++++++++++++=7 ,...,2,1,10254212625510481418152076543217654321i x x x x x x x x x x x x x x x naxz i 或 5、工厂每月生产A 、B 、C 三种产品,单件产品的原材料消耗量、设备台时的消耗量、资源根据市场需求,预测三种产品最低月需求量分别是150、260、120,最高需求量是250、310、130,试建立该问题数学模型,使每月利润最大,为求解。 解:设每月生产A 、B 、C 数量为321,,x x x 。 321121410x x x MaxZ ++= 250042.15.321≤++x x x

模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断

实验二模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断 1.内容:模拟请求页式存储管理中硬件的地址转换和缺页中断处理 2.思想: 装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1” 3.要求及方法: ①设计一个地址转换程序来模拟硬件的地址转换和缺页中断。当访问的页在主存时则形成绝对地址,但不去模拟指令的执行,可以输出转换后的绝对地址来表示一条指令已执行完成。当访问的页不在主存中时,则输出“*页号”来表示硬件产生了一次缺页中断。模拟地址转换流程见图1。 ②编制一个FIFO页面调度程序;FIFO页面调度算法总是先调出作业中最先进入主存中的哪一页。因此可以用一个数组来表示(或构成)页号队列。数组中每个元素是该作业已在主存中的页面号,假定分配给作业的页架数为m,且该作业开始的m页已装入主存,则数组可由m个元素构成。 P[0],P[1],P[2],…,P[m-1] 它们的初值为P[0]:=0,P[1]:=1,P[2]:=2,…,P[m-1]:=m-1 用一指针K指示当要调入新页时应调出的页在数组中的位置,K的初值为“0”,当产生缺页中断后,操作系统总是选择P[K]所指出的页面调出,然后执行: P[K]:=要装入的新页页号 K:=(k+1)mod m 在实验中不必实际地启动磁盘执行调出一页和装入一页的工作,而用输出“OUT调出的页号”和“IN要装入的新页页号”来模拟一次调出和装入过程,模拟程序的流程图见附图1。 按流程控制过程如下:

相关主题
文本预览
相关文档 最新文档