当前位置:文档之家› 数据结构课程 课后习题答案

数据结构课程 课后习题答案

数据结构课程  课后习题答案
数据结构课程  课后习题答案

《数据结构简明教程》练习题及参考答案

练习题1

1. 单项选择题

(1)线性结构中数据元素之间是()关系。

A.一对多

B.多对多

C.多对一

D.一对一

答:D

(2)数据结构中与所使用的计算机无关的是数据的()结构。

A.存储

B.物理

C.逻辑

D.物理和存储

答:C

(3)算法分析的目的是()。

A.找出数据结构的合理性

B.研究算法中的输入和输出的关系

C.分析算法的效率以求改进

D.分析算法的易懂性和文档性

答:C

(4)算法分析的两个主要方面是()。

A.空间复杂性和时间复杂性

B.正确性和简明性

C.可读性和文档性

D.数据复杂性和程序复杂性

答:A

(5)计算机算法指的是()。

A.计算方法

B. 排序方法

C.求解问题的有限运算序列

D.调度方法

答:C

(6)计算机算法必须具备输入、输出和()等5个特性。

A.可行性、可移植性和可扩充性

B.可行性、确定性和有穷性

C.确定性、有穷性和稳定性

D.易读性、稳定性和安全性

答:B

2. 填空题

(1)数据结构包括数据的①、数据的②和数据的③这三个方面的内容。

答:①逻辑结构②存储结构③运算

(2)数据结构按逻辑结构可分为两大类,它们分别是①和②。

答:①线性结构②非线性结构

(3)数据结构被形式地定义为(D,R),其中D是①的有限集合,R是D上的②有限集合。

数据结构简明教程

答:①数据元素 ②关系 (4)在线性结构中,第一个结点 ① 前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点 ② 后继结点,其余每个结点有且只有1个后继结点。

答:①没有 ②没有 (5)在树形结构中,树根结点没有 ① 结点,其余每个结点有且只有 ② 个前驱结点;叶子结点没有 ③ 结点,其余每个结点的后继结点数可以是 ④ 。

答:①前驱 ②1 ③后继 ④任意多个

(6)在图形结构中,每个结点的前驱结点数和后继结点数可以是( )。 答:任意多个

(7)数据的存储结构主要有四种,它们分别是 ① 、 ② 、 ③ 和 ④ 存储结构。 答:①顺序 ②链式 ③索引 ④哈希

(8)一个算法的效率可分为 ① 效率和 ② 效率。 答:①时间 ②空间

3. 简答题

(1)数据结构和数据类型两个概念之间有区别吗?

答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素的集合。数据类型不仅定义了一组数据元素,而且还在其上定义了一组操作。

(2)简述线性结构、树形结构和图形结构的不同点。

答:线性结构反映结点间的逻辑关系是一对一的,树形线性结构反映结点间的逻辑关系是一对多的,图在结构反映结点间的逻辑关系是多对多的。

(3)设有采用二元组表示的数据逻辑结构S=(D,R),其中D={a ,b ,…,i },R={(a ,b ),(a ,c ),(c ,d ),(c ,f ),(f ,h ),(d ,e ),(f ,g ),(h ,i )},问相对于关系R ,哪些结点是开始结点,哪些结点是终端结点?

答:该逻辑结构为树形结构,其中a 结点没有前驱结点,称为根结点,b 、e 、g 、i 结点没有后继结点,是终端结点,也称为叶子结点。

(4)以下各函数是算法中语句的执行频度,n 为问题规模,给出对应的时间复杂度: T 1(n )=n log 2n -1000log 2n T 2(n )=3log 2n -1000log 2n T 3(n )=n 2-1000log 2n

T 4(n )=2n log 2n -1000log 2n

答:T 1(n )=O(n log 2n ),T 2(n )=O( ),T 3(n )=O(n 2),T 4(n )=O(n log 2n )。 (5)分析下面程序段中循环语句的执行次数。

int j=0,s=0,n=100; do { j=j+1;

s=s+10*j;

} while (j

答:j =0,第1次循环:j =1,s =10。第2次循环:j =2,s =30。第3次循环:j =3,s =60。

3

log 2n

3

第4次循环:j =4,s =100。while 条件不再满足。所以,其中循环语句的执行次数为4。

(6)执行下面的语句时,语句s++的执行次数为多少?

int s=0;

for (i=1;i=i;j--)

s++;

答:语句s 的执行次数2

)

2)(3(3)1()1(121

21-+=

++-+=+-=∑∑∑-=-==n n n n i n n i n i i

n

j 。

(7)设n 为问题规模,求以下算法的时间复杂度。

void fun1(int n) { int x=0,i;

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

x++;

}

答:其中x++语句属基本运算语句,∑∑∑=+==-=

-==

n i n i j n

i n n i n n T 1

1

1

2

)

1()(1)(=O(n 2)。 (8)设n 为问题规模,是一个正偶数,试计算以下算法结束时m 的值,并给出该算法的时间复杂度。

void fun2(int n) { int m=0;

for (i=1;i<=n;i++) for (j=2*i;j<=n;j++)

m++;

}

答:由于内循环j 的取值范围,所以i ≤n /2,则∑∑∑-===--==2/122/1

24/))12((n i n

i

j n i n i n m ,该程

序段的时间复杂度为O(n 2)。

上机实验题1

有一个整型数组a ,其中含有n 个元素,设计尽可能好的算法求其中的最大元素和次大元素,并采用相关数据测试。

解:maxs 算法用于返回数组a[0..n -1]中的最大元素值max1和次大元素值max2,max1和max2设计为引用类型。对应的程序如下:

#include

void maxs(int a[],int n,int &max1,int &max2) { int i;

max1=max2=a[0]; for (i=1;i

数据结构简明教程

if (a[i]>max1)

{ max2=max1;

max1=a[i];

}

else if (a[i]>max2)

max2=a[i];

}

void main()

{ int a[]={1,4,10,6,8,3,5,7,9,2};

int n=10;

int max1,max2;

maxs(a,n,max1,max2);

printf("最大元素值=%d,次大元素值=%d\n",max1,max2);

}

练习题2

1. 单项选择题

(1)数据在计算机存储器内表示时,物理地址与逻辑地址相对顺序相同并且是连续的,称之为()。

A.存储结构

B.逻辑结构

C.顺序存储结构

D.链式存储结构

答:C

(2)在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是()。

A.访问第i个结点(1≤i≤n)和求第i(2≤i≤n)个结点的前驱结点

B.在第i(1≤i≤n)个结点后插入一个新结点

C.删除第i个结点(1≤i≤n)

D.将n个结点从小到大排序

答:A

(3)向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动()个元素。

A.8

B.63.5

C.63

D.7

答:B

(4)链式存储结构所占存储空间()。

A.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针

B.只有一部分,存放结点值

C.只有一部分,存储表示结点间关系的指针

D.分两部分,一部分存放结点值,另一部分存放结点所占单元数

答:A

(5)线性表若采用链式存储结构时,要求内存中可用存储单元的地址()。

A.必须是连续的

B.部分地址必须是连续的

C.一定是不连续的

D.连续或不连续都可以

答:D

(6)一个线性表在()情况下适用于采用链式存储结构。

A.需经常修改其中的结点值

B.需不断对其进行删除插入

C.其中含有大量的结点

D.其中结点结构复杂

答:B

(7)单链表的存储密度()

A.大于1

B.等于1

C.小于1

D.不能确定

答:C

2. 填空题

(1)在顺序表中插入或删除一个元素时,需要平均移动(①)元素,具体移动的元素个数与(②)有关。

答:①表中一半②表长和该元素在表中的位置

(2)向一个长度为n的顺序表的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动()个元素。

答:n-i+1

(3)向一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动()个元素。

答:n-i

(4)在顺序表中访问任意一个元素的时间复杂度均为(①),因此顺序表也称为(②)的数据结构。

答:①O(1) ②随机存取

(5)顺序表中逻辑上相邻的元素的物理位置(①)相邻。单链表中逻辑上相邻的元素的物理位置(②)相邻。

答:①一定②不一定

(6)在带头结点的单链表中,除头结点外,任一结点的存储位置由()指示。

答:其前驱结点的链域的值

(7)在含有n个数据结点的单链表中要删除已知结点*p,需找到它的(①),其时间复杂度为(②)。

答:①前驱结点的地址②O(n)

(8)含有n(n>1)个结点的循环双向链表中,为空的指针域数为()。

答:0

3. 简答题

(1)试比较顺序存储结构和链式存储结构的优缺点。在什么情况下用顺序表比链表好?

答:顺序存储结构中,相邻数据元素的存放地址也相邻,并要求内存中可用存储单元

5

数据结构简明教程

的地址必须是连续的。其优点是存储密度大,存储空间利用率高;缺点是插入或删除元素时不方便。

链式存储结构中,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针。其优点是插入或删除元素时很方便,使用灵活;缺点是存储密度小,存储空间利用率低。

顺序表适宜于做查找这样的静态操作;链表宜于做插入、删除这样的动态操作。若线性表的长度变化不大,且其主要操作是查找,则采用顺序表;若线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。

(2)对于表长为n的顺序表,在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需要移动的元素的平均个数为多少?删除一个元素所需要移动的平均个数为多少?

答:插入一个元素所需要移动的元素的平均个数为(n-1)/2,删除一个元素所需要移动的平均个数为n/2。

(3)在链表中设置头结点的作用是什么?

答:在链表中设置头结点后,不管链表是否为空表,头结点指针均不空,并使得对链表的操作(如插入和删除)在各种情况下统一,从而简化了算法的实现过程。

(4)对于双链表和单链表,在两个结点之间插入一个新结点时需修改的指针各为多少个?

答:对于双链表,在两个结点之间插入一个新结点时,需修改前驱结点的next域、后继结点的prior域和新插入结点的next、prior域。所以共修改4个指针。

对于单链表,在两个结点之间插入一个新结点时,需修改前一结点的next域,新插入结点的next域。所以共修改两个指针。

(5)某含有n(n>1)结点的线性表中,最常用的操作是在尾结点之后插入一个结点和删除第一个结点,则采用以下哪种存储方式最节省运算时间。

①单链表;

②仅有头指针不带头结点的循环单链表;

③双链表;

④仅有尾指针的循环单链表。

答:在单链表中,删除第一个结点的时间复杂度为O(1)。插入结点需找到前驱结点,所以在尾结点之后插入一个结点,需找到尾结点,对应的时间复杂度为O(n)。

在仅有头指针不带头结点的循环单链表中,删除第一个结点的时间复杂度O(n),因为删除第一个结点后还要将其改为循环单链表;在尾结点之后插入一个结点的时间复杂度也为O(n)。

在双链表中,删除第一个结点的时间复杂度为O(1);在尾结点之后插入一个结点,也需找到尾结点,对应的时间复杂度为O(n)。

在仅有尾指针的循环单链表中,通过该尾指针可以直接找到第一个结点,所以删除第一个结点的时间复杂度为O(1);在尾结点之后插入一个结点也就是在尾指针所指结点之后插入一个结点,时间复杂度也为O(1)。因此④最节省运算时间。

4. 算法设计题

(1)设计一个高效算法,将顺序表的所有元素逆置,要求算法空间复杂度为O(1)。

解:遍历顺序表L的前半部分元素,对于元素L.data[i](0≤i<L.length/2),将其与后半部分对应元素L.data[L.length-i-1]进行交换。对应的算法如下:

void reverse(SqList &L)

{ int i;

ElemType x;

for (i=0;i

{ x=L.data[i]; //L.data[i]与L.data[L.length-i-1]交换L.data[i]=L.data[L.length-i-1];

L.data[L.length-i-1]=x;

}

}

本算法的时间复杂度为O(n)。

(2)设计一个算法从顺序表中删除重复的元素,并使剩余元素间的相对次序保持不变。

解:对于顺序表L,用i从1开始遍历其元素,设L.data[0..j](j的初值为0)中没有重复的元素。检测L.data[i](j

void delsame(SqList &L) //L为引用型参数

{ int i,j=0,k;

for (i=1;i

{ k=0;

while (k<=j && L.data[k]!=L.data[i])

k++;

if (k>j) //表示L.data[i]和L.data[0..j]中所有元素都不相同

{ j++;

L.data[j]=L.data[i];

}

}

L.length=j+1; //顺序表长度置新值

}

本算法的时间复杂度为O(n2),空间复杂度为O(1)。

(3)设计一个算法从有序顺序表中删除重复的元素,并使剩余元素间的相对次序保持不变。

解:在有序顺序表L中,所有重复的元素应是相邻存放的,用k保存不重复出现的元素个数,先将不重复的有序区看成是L.data[0..0],置e=L.data[0],用i从1开始遍历L的所有元素:当L.data[i]≠e时,将它放在L.data[k]中,k增1,置e=L.data[i],最后将L的length置为k。对应的算法如下:

void delsame1(SqList &L) //L为引用型参数

{ int i,k=1; //k保存不重复的元素个数

ElemType e;

7

数据结构简明教程

e=L.data[0];

for (i=1;i

{ if (L.data[i]!=e) //只保存不重复的元素

{ L.data[k]=L.data[i];

k++;

e=L.data[i];

}

}

L.length=k; //顺序表长度置新值

}

本算法是一个高效算法,其时间复杂度为O(n),空间复杂度为O(1)。如果每次遇到重复的元素,都通过移动其后所有元素来删除它,这样的时间复杂度会变成O(n2)。

(4)设计一个算法删除单链表L中第一个值为x的结点。

解:用p、q遍历整个单链表,p指向*q的前驱结点,q用于查找第一个值为x的结点,当找到后将*q结点删除,返回1;否则返回0。对应的算法如下:

int delx(SLink *&L,ElemType x)

{ SLink *p=L,*q=p->next; //p指向*q的前驱结点

while (q!=NULL && q->data!=x)

{ p=q;

q=q->next;

}

if (q!=NULL) //找到值为x的结点

{ p->next=q->next;

free(q);

return 1;

}

else return 0; //未找到值为x的结点

}

(5)设计一个算法判定单链表L是否是递增的。

解:判定链表L从第2个结点开始的每个结点的值是否比其前驱的值大。若有一个不成立,则整个链表便不是递增的;否则是递增的。对应的算法如下:

int increase(SLink *L)

{ SLink *pre=L->next,*p; //pre指向第一个数据结点

p=pre->next; //p指向*pre结点的后继结点

while (p!=NULL)

{ if (p->data>=pre->data) //若正序则继续判断下一个结点

{ pre=p; //pre、p同步后移

p=p->next;

}

else return 0;

}

return 1;

}

(6)有一个整数元素建立的单链表A,设计一个算法,将其拆分成两个单链表A和B,使得A单链表中含有所有的偶数结点,B单链表中所有的奇数结点,且保持原来的相对次序。

解:采用重新单链表的方法,由于要保持相对次序,所以采用尾插法建立新表A、B。用p遍历原单链表A的所有数据结点,若为偶数结点,将其链到A中,若为奇数结点,将其链到B中。对应的算法如下:

void Split(SLink *&A,SLink *&B)

{ SLink *p=A->next,*ra,*rb;

ra=A;

B=(SLink *)malloc(sizeof(SLink)); //建立头结点

rb=B; //r总是指向B链表的尾结点

while (p!=NULL)

{ if (p->data%2==0) //偶数结点

{ ra->next=p; //将*p结点链到A中

ra=p;

p=p->next;

}

else //奇数结点

{ rb->next=p; //将*p结点链到B中

rb=p;

p=p->next;

}

}

ra->next=rb->next=NULL;

}

本算法的时间复杂度为O(n),空间复杂度为O(1)。

(7)有一个有序单链表(从小到大排列),表头指针为L,设计一个算法向该单链表中插入一个元素为x的结点,使插入后该链表仍然有序。

解:先建立一个待插入的结点,然后依次与链表中的各结点的数据域比较大小,找到插入该结点的位置,最后插入该结点。对应的算法如下:

void inorderList(SLink *&L,ElemType x)

{ SLink *s,*p,*q;

s=(SLink *)malloc(sizeof(SLink)); //建立一个待插入的结点

s->data=x;s->next=NULL;

if (L==NULL || xdata) //若单链表为空或x小于第1个结点date域

{ s->next=L; //把*s结点插入到头结点之后

L=s;

}

else

{ q=L; //寻找插入位置,p指向待比较的结点,q指向p的前驱结点p=q->next;

9

数据结构简明教程

while (p!=NULL && x>p->data) //若x小于p所指结点的data域值

if (x>p->data)

{ q=p;

p=p->next;

}

s->next=p; //将s结点插入到*q和*p之间

q->next=s;

}

}

(8)有一个单链表L,其中可能出现值域重复的结点,设计一个算法删除值域重复的结点。并分析算法的时间复杂度。

解:用p遍历单链表,用r遍历*p结点之后的结点,q始终指向*r结点的直接前驱结点,若r->data==p->data,则删除*r结点,否则q、r同步后移一个结点。对应的算法如下:void dels1(SLink *&L)

{ SLink *p=L->next,*q,*r,*t;

while (p!=NULL)

{ q=p;

r=q->next;

while (r!=NULL)

{ if (r->data==p->data) //r指向被删结点

{ t=r->next;

q->next=t;

free(r);

r=t;

}

else

{ q=r;

r=r->next;

}

}

p=p->next;

}

}

本算法的时间复杂度为O(n2)。

(9)有一个递增有序单链表(允许出现值域重复的结点),设计一个算法删除值域重复的结点。并分析算法的时间复杂度。

解:由于是有序表,所以相同值域的结点都是相邻的。用p遍历递增单链表,若*p结点的值域等于其后结点的值域,则删除后者。对应的算法如下:

void dels(SLink *&L)

{ SLink *p=L->next,*q;

while (p->next!=NULL)

{ if (p->data==p->next->data) //找到重复值的结点

{ q=p->next; //q指向这个重复值的结点

p->next=q->next; //删除*q结点

free(q);

}

else p=p->next;

}

}

本算法的时间复杂度为O(n)。

(10)有一个双链表L,设计一个算法查找第一个元素值为x的结点,将其与后继结点进行交换。

解:先找到第一个元素值为x的结点*p,q指向其后继结点,本题是将*p结点移到*q 结点之后,实现过程是:删除*p结点,再将其插入到*q结点之后。对应的算法如下:int swap(DLink *L,ElemType x)

{ DLink *p=L->next,*q;

while (p!=NULL && p->data!=x)

p=p->next;

if (p==NULL) //未找到值为x的结点

return 0;

else //找到值为x的结点*p

{ q=p->next; //q指向*p的后继结点

if (q!=NULL) //*p结点不是尾结点

{ p->prior->next=q; //先删除*p结点

q->prior=p->prior;

p->next=q->next; //将*p结点插入到*q结点之后

if (q->next!=NULL)

q->next->prior=p;

q->next=p;

p->prior=q;

return 1;

}

else //*p结点是尾结点

return 0; //无法与后继结点交换,返回0

}

}

(11)对于有n(n≥1)个数据结点的循环单链表L,设计一个算法将所有结点逆置。

解:采用头插法重建循环单链表L的思路,先建立一个空的循环单链表,用p遍历所有数据结点,每次将*p结点插入到前端。对应的算法如下:

void Reverse(SLink *&L)

{ SLink *p=L->next,*q;

11

数据结构简明教程

L->next=L; //建立一个空循环单链表

while (p!=L)

{ q=p->next;

p->next=L->next; //将*p结点插入到前端

L->next=p;

p=q;

}

}

上机实验题2

有两个整数集合采用有序单链表存储,设计尽可能高效的算法求两个集合的并集、交集和差集。并用相关数据进行测试。

#include

#include "SLink.h"

void Union(SLink *L1,SLink *L2,SLink *&L3) //求并集

{ SLink *p,*q,*s,*tc;

L3=(SLink *)malloc(sizeof(SLink));

tc=L3;

p=L1->next;

q=L2->next;

while (p!=NULL && q!=NULL)

{ if (p->datadata)

{ s=(SLink *)malloc(sizeof(SLink));

s->data=p->data;

tc->next=s;

tc=s;

p=p->next;

}

else if (p->data>q->data)

{ s=(SLink *)malloc(sizeof(SLink));

s->data=q->data;

tc->next=s;

tc=s;

q=q->next;

}

else

{ s=(SLink *)malloc(sizeof(SLink));

s->data=p->data;

tc->next=s;

tc=s;

p=p->next;

q=q->next;

}

}

while (p!=NULL)

{ s=(SLink *)malloc(sizeof(SLink));

s->data=p->data;

tc->next=s;

tc=s;

p=p->next;

}

while (q!=NULL)

{ s=(SLink *)malloc(sizeof(SLink));

s->data=q->data;

tc->next=s;

tc=s;

q=q->next;

}

tc->next=NULL;

}

void InterSection(SLink *L1,SLink *L2,SLink *&L3) //求交集{ SLink *p,*q,*s,*tc;

L3=(SLink *)malloc(sizeof(SLink));

tc=L3;

p=L1->next;

q=L2->next;

while (p!=NULL && q!=NULL)

{ if (p->datadata)

p=p->next;

else if (p->data>q->data)

q=q->next;

else //p->data=q->data

{ s=(SLink *)malloc(sizeof(SLink));

s->data=p->data;

tc->next=s;

tc=s;

p=p->next;

q=q->next;

}

}

tc->next=NULL;

}

void Subs(SLink *L1,SLink *L2,SLink *&L3) //求差集

13

数据结构简明教程

{ SLink *p,*q,*s,*tc;

L3=(SLink *)malloc(sizeof(SLink));

tc=L3;

p=L1->next;

q=L2->next;

while (p!=NULL && q!=NULL)

{ if (p->datadata)

{ s=(SLink *)malloc(sizeof(SLink));

s->data=p->data;

tc->next=s;

tc=s;

p=p->next;

}

else if (p->data>q->data)

q=q->next;

else //p->data=q->data

{ p=p->next;

q=q->next;

}

}

while (p!=NULL)

{ s=(SLink *)malloc(sizeof(SLink));

s->data=p->data;

tc->next=s;

tc=s;

p=p->next;

}

tc->next=NULL;

}

void main()

{ SLink *A,*B,*C,*D,*E;

ElemType a[]={1,3,6,8,10,20};

CreateListR(A,a,6); //尾插法建表

printf("集合A:");DispList(A);

ElemType b[]={2,5,6,10,16,20,30};

CreateListR(B,b,7); //尾插法建表

printf("集合B:");DispList(B);

printf("求A、B并集C\n");

Union(A,B,C); //求A、B并集C printf("集合C:");DispList(C);

printf("求A、B交集C\n");

InterSection(A,B,D); //求A、B并集D printf("集合D:");DispList(D);

printf("求A、B差集E\n");

Subs(A,B,E); //求A、B差集E

printf("集合E:");DispList(E);

DestroyList(A);

DestroyList(B);

DestroyList(C);

DestroyList(D);

DestroyList(E);

}

练习题3

1. 单项选择题

(1)栈中元素的进出原则是()。

A.先进先出

B.后进先出

C.栈空则进

D.栈满则出

答:B

(2)设一个栈的进栈序列是A、B、C、D(即元素A~D依次通过该栈),则借助该栈所得到的输出序列不可能是()。

A.A,B,C,D

B.D,C,B,A

C.A,C,D,B

D.D,A,B,C

答:D

(3)一个栈的进栈序列是a、b、c、d、e,则栈的不可能的输出序列是()。

A.edcba

B.decba

C.dceab

D.abcde

答:C

(4)已知一个栈的进栈序列是1,2,3,…,n,其输出序列的第一个元素是i(1≤i ≤n)则第j(1≤j≤n)个出栈元素是()。

A.i

B.n-i

C.j-i+1

D.不确定

答:D

(5)设顺序栈st的栈顶指针top的初始时为-1,栈空间大小为MaxSize,则判定st 栈为栈空的条件为()。

A.st.top==-1

B.st.top!=-1

C.st.top!=MaxSize

D.st.top==MaxSize

答:A

(6)设顺序栈st的栈顶指针top的初始时为-1,栈空间大小为MaxSize,则判定st 栈为栈满的条件是。

A.st.top!=-1

B.st.top==-1

C.st.top!=MaxSize-1

D.st.top==MaxSize-1

答:D

(7)队列中元素的进出原则是()。

A.先进先出

B.后进先出

C.栈空则进

D.栈满则出

15

数据结构简明教程

答:A

(8)元素A、B、C、D顺序连续进入队列qu后,队头元素是(①),队尾元素是(②)。

A.A

B.B

C.C

D.D

答:①A ②D。

(9)一个队列的入列序列为1234,则队列可能的输出序列是()。

A.4321

B.1234

C.1432

D.3241

答:B

(10)循环队列qu(队头指针front指向队首元素的前一位置,队尾指针rear指向队尾元素的位置)的队满条件是()。

A. (qu.rear+1)%MaxSize==(qu.front+1)%MaxSize

B. (qu.rear+1)%MaxSize==qu.front+1

C.(qu.rear+1)%MaxSize==qu.front

A.qu.rear==qu.front

答:C

(11)循环队列qu(队头指针front指向队首元素的前一位置,队尾指针rear指向队尾元素的位置)的队空条件是()。

A. (qu.rear+1)%MaxSize==(qu.front+1)%MaxSize

B. (qu.rear+1)%MaxSize==qu.front+1

C.(qu.rear+1)%MaxSize==qu.front

D.qu.rear==qu.front

答:D

(12)设循环队列中数组的下标是0~N-1,其头尾指针分别为f和r(队头指针f指向队首元素的前一位置,队尾指针r指向队尾元素的位置),则其元素个数为()。

A.r-f

B.r-f-1

C.(r-f)%N+1

D.(r-f+N)%N

答:D

(13)设有4个数据元素a、b、c和d,对其分别进行栈操作或队操作。在进栈或进队操作时,按a、b、c、d次序每次进入一个元素。假设栈或队的初始状态都是空。现要进行的栈操作是进栈两次,出栈一次,再进栈两次,出栈一次;这时,第一次出栈得到的元素是(①),第二次出栈得到的元素是(②);类似地,考虑对这4个数据元素进行的队操作是进队两次,出队一次,再进队两次,出队一次;这时,第一次出队得到的元素是(③),第二次出队得到的元素是(④)。经操作后,最后在栈中或队中的元素还有(⑤)个。

①~④:A.a B.b C.c D.d

⑤: A.1 B.2 C.3 D.0

答:①B ②D ③A ④B ⑤B

(14)设栈S和队列Q的初始状态为空,元素e1~e6依次通过栈S,一个元素出后即进队列Q,若6个元素出队的序列是e2、e4、e3、e6、e5、e1,则栈S的容量至少应该是()。

A.5

B.4

C.3

D.2

答:C

2. 填空题

(1)栈是一种特殊的线性表,允许插入和删除运算的一端称为(①)。不允许插入和删除运算的一端称为(②)。

答:①栈顶②栈底

(2)一个栈的输入序列是12345,的输出序列为12345,其进栈出栈的操作为()。

答:1进栈,1出栈,2进栈,2出栈,3进栈,3出栈,4进栈,4出栈,5进栈,5出栈。

(3)有5个元素,其进栈次序为A、B、C、D、E,在各种可能的出栈次序中,以元素C、D最先出栈(即C第一个且D第二个出栈)的次序有()。

答:CDBAE、CDEBA、CDBEA。

(4)顺序栈用data[0..n-1]存储数据,栈顶指针为top,其初始值为0,则元素x进栈的操作是()。

答:data[top]=x; top++;

(5)顺序栈用data[0..n-1]存储数据,栈顶指针为top,其初始值为0,则出栈元素x 的操作是()。

答:top--; x=data[top];

(6)()是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。

答:队列

(7)设有数组A[0..m]作为循环队列的存储空间,front为队头指针(它指向队首元素的前一位置),rear为队尾指针(它指向队尾元素的位置),则元素x执行入队的操作是()。

答:rear=(rear+1)%(m+1); A[rear]=x;

(8)设有数组A[0..m]作为循环队列的存储空间,front为队头指针(它指向队首元素的前一位置),rear为队尾指针(它指向队尾元素的位置),则元素出队并保存到x中的操作是()。

答:front=(front+1)%(m+1); x=A[rear];

3. 简答题

(1)简要说明线性表、栈与队的异同点。

答:相同点:都属地线性结构,都可以用顺序存储或链表存储;栈和队列是两种特殊的线性表,即受限的线性表,只是对插入、删除运算加以限制。

不同点:①运算规则不同,线性表为随机存取,而栈是只允许在一端进行插入、删除运算,因而是后进先出表LIFO;队列是只允许在一端进行插入、另一端进行删除运算,因而是先进先出表FIFO。②用途不同,栈用于子程调用和保护现场等,队列用于多道作业处

17

数据结构简明教程

理、指令寄存及其他运算等等。

(2)顺序队的“假溢出”是怎样产生的?如何知道循环队列是空还是满?

答:一般的一维数组队列的尾指针已经到了数组的上界,不能再有进队操作,但其实数组中还有空位置,这就叫“假溢出”。

采用循环队列是解决假溢出的途径。另外,解决循环队列是空还是满的办法如下:

①设置一个布尔变量以区别队满还是队空;

②浪费一个元素的空间,用于区别队满还是队空。

③使用一个计数器记录队列中元素个数(即队列长度)。

通常采用法②,让队头指针front指向队首元素的前一位置,队尾指针rear指向队尾元素的位置,这样判断循环队列队空标志是:front=rear,队满标志是:(rear+1)%MaxSize=front。

4. 算法设计题

(1)假设采用顺序栈存储结构,设计一个算法,利用栈的基本运算返回指定栈中栈底元素,要求仍保持栈中元素不变。这里只能使用栈st的基本运算来完成,不能直接用st.data[0]来得到栈底元素。

解:假定采用顺序栈结构。先退栈st中所有元素,利用一个临时栈tmpst存放从st栈中退栈的元素,最后的一个元素即为所求,然后将临时栈tmpst中的元素逐一出栈并进栈到st中,这样恢复st栈中原来的元素。对应算法如下:

int GetBottom(SqStack st,ElemType &x)

{ ElemType e;

SqStack tmpst; //定义临时栈

InitStack(tmpst); //初始化临时栈

if (StackEmpty(st)) //空栈返回0

return 0;

while (!StackEmpty(st)) //临时栈tmpst中包含st栈中逆转元素

{ Pop(st,x);

Push(tmpst,x);

}

while (!StackEmpty(tmpst)) //恢复st栈中原来的内容

{ Pop(tmpst,e);

Push(st,e);

}

return 1; //返回1表示成功

}

(2)设计一个算法,采用一个顺序栈逆向输出单链表L中所有元素。

解:本题并不需要改变单链表L的结构。设置一个顺序栈st,先遍历单链表并将所有元素进栈,然后栈不空循环并输出栈中所有元素。对应算法如下:

void ReverseDisp(SLink *L)

{ ElemType x;

struct node

{ ElemType data[MaxSize];

int top;

} st; //定义一个顺序栈

st.top=-1;

SLink *p=L->next;

while (p!=NULL) //遍历单链表,将所有元素进栈

{ st.top++;

st.data[st.top]=p->data;

p=p->next;

}

while (st.top!=-1) //栈不空循环,输出栈中所有元素

{ x=st.data[st.top];

st.top--;

printf("%d ",x);

}

printf("\n");

}

(3)设计一个循环队列,用front和rear分别作为队头和队尾指针,另外用一个标志tag标识队列可能空(0)或可能满(1),这样加上front==rear可以作为队空或队满的条件。要求设计队列的相关基本运算算法。

解:设计的队列的类型如下:

typedef struct

{ ElemType data[MaxSize];

int front,rear; //队头和队尾指针

int tag; //为0表示队空,为1时表示不空

} QueueType;

初始时tag=0,进行成功的插入操作后tag=1,进行成功的删除操作后tag=0;因为只有在插入操作后队列才有可能满,只有在删除操作后队列才有可能空,因此,这样的队列的基本要素如下:

初始时:tag=0,front=rear

队空条件:qu.front==qu.rear && qu.tag==0

队满条件:qu.front==qu.rear && qu.tag==1

对应的算法如下:

//-----初始化队列算法-----

void InitQueue1(QueueType &qu)

{ qu.front=qu.rear=0;

qu.tag=0; //为0表示队空可能为空

}

//-----判队空算法-----

int QueueEmpty1(QueueType qu)

19

数据结构简明教程

{

return(qu.front==qu.rear && qu.tag==0);

}

//-----判队满算法-----

int QueueFull1(QueueType qu)

{

return(qu.tag==1 && qu.front==qu.rear);

}

//-----进队算法-----

int enQueue1(QueueType &qu,ElemType x)

{ if (QueueFull1(qu)==1) //队满

return 0;

qu.rear=(qu.rear+1)%MaxSize;

qu.data[qu.rear]=x;

qu.tag=1; //至少有一个元素,可能满

return 1;

}

//-----出队算法-----

int deQueue1(QueueType &qu,ElemType &x)//出队

{ if (QueueEmpty1(qu)==1) //队空

return 0;

qu.front=(qu.front+1)%MaxSize;

x=qu.data[qu.front];

qu.tag=0; //出队一个元素,可能空

return 1;

}

(4)假设用一个循环单链表表示队列,并且只设一个指针rear指向队尾结点,但不设头指针,设计出相应的队初始化、进队、出队和判队空的算法。

解:假设链队是不带头结点的循环单链表,其示意图如图 3.1所示。队空条件:rear==NULL;进队操作:在*rear结点之后插入结点并让rear指向该结点;出队操作:删除*rear结点之后的一个结点。对应的算法如下:

图3.1 不带头结点的循环单链表表示队列

typedef struct node

{ ElemType data;

struct node *next;

} QNode; //链队结点类型

//-----初始化队列-----

近代史纲要习题及答案

第三章作业及答案 一、单项选择题 1. 标志着以慈禧太后为首的清政府彻底放弃抵抗外国侵略者的事件是() A .《南京条约》的签订 B .《天津条约》的签订 C .《北京条约》的签订 D .《辛丑条约》的签订 2 .清末“预备立宪”的根本目的在于() A .仿效欧美政体 B .发展资本主义 C .延续反动统治 D .缓和阶级矛盾 3.1903年6月,()在上海《苏报》发表《驳康有为论革命书》,批驳康有为所谓“中国之可立宪,不可革命”的谬论 A.陈天华 B.邹容 C.章炳麟 D.梁启超 4.1903年邹容写的()是中国近代史上第一部宣传革命和资产阶级共和国思想的着作 A.《猛回头》 B.《警世钟》 C.《革命军》 D.《驳康有为论革命书》 5.中国近代第一个资产阶级革命的全国性政党是( ) A.强学会 B.兴中会 C.同盟会 D.国民党 6. 孙中山民权主义思想的主张是( ) A.驱除鞑虏 B.恢复中华 C.创立民国 D.平均地权 7.1905年11月,孙中山在《民报》发刊词中将中国同盟会的政治纲领概括为() A.创立民国、平均地权 B.驱除鞑虏、恢复中华、创立合众政府 C.民族主义、民权主义、民生主义 D.联俄、联共、扶助农工 8.武昌起义前同盟会领导的影响最大的武装起义是( )

A.浙皖起义 B.萍浏醴起义 C.镇南关起义 D.黄花岗起义 9.中国历史上第一部具有资产阶级共和国宪法性质的法典是() A.《钦定宪法大纲》 B.《中华民国临时约法》 C.《中华民国约法》 D.《试训政纲领》 10.南京临时政府中占领导和主体地位的派别是() A .资产阶级维新派 B .资产阶级保皇派 C .资产阶级立宪派 D .资产阶级革命派 11. 辛亥革命取得的最大成就是() A.推翻了封建帝制 B.促进了资本主义的发展 C.使人民获得了一些民主自由权利 D.打击了帝国主义的殖民势力 12.清帝被迫退位,在中国延续两千多年的封建帝制终于覆灭的时间是()。 A、1911年10月10日 B、1912年1月1日 C、1912年2月12日 D、1912年4月1日 13.中国第一次比较完全意义上的资产阶级民主革命是指()。 A、辛亥革命 B、国民革命 C、北伐战争 D、抗日战争 14.1915年,()在云南率先举起反袁护国的旗帜,发动护国战争 A.黄兴 B.段祺瑞 C.蔡锷 D.孙中山 15.资产阶级革命派开展护国运动的主要原因是 ( ) A.袁世凯指使刺杀宋教仁 B.袁世凯强迫国会选举他为正式大总统 C.袁世凯解散国会 D.袁世凯复辟帝制 16.袁世凯为复辟帝制不惜出卖主权,与日本签订了卖国的() A.中日共同防敌军事协定 B.承认外蒙自治

《数据结构》课后习题答案

第1章绪论 1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。 答案: 数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。 数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。 数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。 数据对象:是性质相同的数据元素的集合,是数据的一个子集。例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。 逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。 存储结构:数据对象在计算机中的存储表示,也称为物理结构。 抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。 2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。 答案: 例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继。学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。 这些学生记录在计算机中的存储表示就是存储结构。如果用连续的存储单元(如用数组表示)来存放这些记录,则称为顺序存储结构;如果存储单元不连续,而是随机存放各个记录,然后用指针进行链接,则称为链式存储结构。 即相同的逻辑结构,可以对应不同的存储结构。 3.简述逻辑结构的四种基本关系并画出它们的关系图。 答案: (1)集合结构 数据元素之间除了“属于同一集合”的关系外,别无其他关系。例如,确定一名学生是否为班级成员,只需将班级看做一个集合结构。 (2)线性结构 数据元素之间存在一对一的关系。例如,将学生信息数据按照其入学报到的时间先后顺序进行排列,将组成一个线性结构。 (3)树结构

课后作业完成题库1、4、7、8、9、10、12、25题

课后作业:完成题库1、4、7、8、9、10、12、25题 01利润的概述 02所得税费用 利润是指企业在一定会计期间的经营成果。利润包括收入减去费用后的净额、直接计入当期利润的利得和损失等。 2.利润的构成 ①营业利润=营业收入-营业成本-税金及附加-销售费用-管理费用-财务费用+投资收益(减损失)+公允价值变动收益(减损失)-资产减值损失+其他收益 ②利润总额=营业利润+营业外收入-营业外支出 ③净利润=利润总额-所得税费用 习题解惑 【例题?单选题】下列各项中,影响当期营业利润的是()。 A.处置固定资产净损益 B.自然灾害导致原材料净损失 C.支付委托代销商品的手续费 D.溢价发行股票支付的发行费用 【答案】C 【解析】选项A计入营业外收支,选项B计入营业外支出,选项D冲减资本公积。 【例题?多选题】下列各项中,既影响营业利润又影响利润总额的业务有()。 A.计提坏账准备计入资产减值损失科目中 B.转销确实无法支付的应付账款 C.出售单独计价包装物取得的收入 D.转让股票所得收益计入投资收益 【答案】ACD 【解析】选项B,计入营业外收入,不影响营业利润。 营业外收支的账务处理 (一)营业外收入账务处理 1.处置非流动资产利得

处置固定资产通过“固定资产清理”科目核算,其账户余额转入营业外收入或营业外支出; 2.确认盘盈利得、捐赠利得 盘盈利得应通过“待处理财产损溢”科目核算 【例题?计算题】某企业将固定资产报废清理的净收益8000元转作营业外收入 写出会计分录。 【答案】 借:固定资产清理8000 贷:营业外收入-非流动资产处置利得8000 习题解惑 【例题?计算题】某企业在现金清查中盘盈200元,按管理权限报经批准后转入营业外收入。写出下列情况时的会计录: ①发现盘盈时: ②经批准转入营业外收入时: 【答案】 ①发现盘盈时: 借:库存现金200 贷:待处理财产损溢200 ②经批准转入营业外收入时: 借:待处理财产损溢200 贷:营业外收入200 【例题?多选题】下列各项中应计入营业外收入的有()。 A.出售持有至到期投资的净收益 B.无法查明原因的现金溢余 C.出售无形资产的净收益 D.出售投资性房地产的净收益 【答案】BC 【解析】选项A,计入投资收益;选项D,计入其他业务收入。 【例题?单选题】下列各项中,不应计入营业外收入的是()。 A.债务重组利得 B.处置固定资产净收益 C.收发差错造成存货盘盈 D.确实无法支付的应付账款 【答案】C 【解析】存货盘盈冲减管理费用。 所得税费用 (一)所得税费用的构成 所得税费用是指企业确认的应从当期利润总额中扣除的所得税费用。包括当期所得税和递延所得税两部分。

近代史课后习题答案

1、怎样理解鸦片战争是中国近代史的起点? 鸦片战争是中国近代史的开端,原因有四: 第一,战争后中国的社会性质发生了根本性变化,由一个落后封闭但独立自主的封建国家沦为一个半殖民地半封建社会。 第二,中国的发展方向发生变化,战前中国是一个没落的封建大国,封建制度已经腐朽,在缓慢地向资本主义社会发展;而鸦片战争后中国的民族资本主义不可能获得正常发展,中国也就不可能发展为成熟的资本主义社会,而最终选择了社会主义道路。 第三,社会主要矛盾发生变化,战前中国的主要矛盾是农民阶级与封建地主阶级的矛盾,而战后主要矛盾则包括农民阶级和地主阶级的矛盾及中华民族与外国殖民侵略者的矛盾,也就是社会主要矛盾复杂化。 第四,是革命任务发生变化,原先的革命任务是反对本国封建势力,战后则增加了反对外国殖民侵略的任务,革命的性质也由传统的农民战争转为旧民族主义革命。 2、怎样认识近代中国的主要矛盾、社会性质及其基本特征? (1)近代中国的主要矛盾 帝国主义和中华民族的矛盾;封建主义和人民大众的矛盾是近代中国的主要矛盾。 (2)社会性质:半殖民地半封建的性质。 中国社会的半殖民地半封建社会,是近代以来中国在外国资本主义势力的入侵及其与中国封建主义势力相结合的条件下,逐步形成的一种从属于资本主义世界体系的畸形的社会形态。(3)基本特征 第一,资本——帝国主义侵略势力日益成为支配中国的决定性力量。 第二,中国的封建势力日益衰败并同外国侵略势力相勾结,成为资本——帝国主义压迫、奴役中国人民的社会基础和统治支柱。 第三,中国的自然经济基础虽然遭到破坏,但是封建剥削制度的根基——封建地主的土地所有制成为中国走向近代化和民主化的严重障碍。 第四,中国新兴的民族资本主义经济虽然已经产生,但是发展很缓慢,力量很软弱,且大部分与外国资本——帝国主义和本国封建主义都有或多或少的联系。 第五,由于近代中国处于资本——帝国主义列强的争夺和间接统治之下,近代中国各地区经济、政治和文化的发展是极不平衡的,中国长期处于不统一状态。 第六,在资本——帝国主义和封建主义的双重压迫下,中国的广大人民特别是农民日益贫困化以致大批破产,过着饥寒交迫和毫无政治权力的生活。 3、如何理解近代中国的两大历史任务及其相互关系? (1)近代中国的两大历史任务: 第一,争取民族独立,人民解放;第二,实现国家富强,人民富裕。 (2)近代中国的两大历史任务的相互关系: 争取民族独立,人民解放和实现国家富强,人民富裕这两个历史任务,是互相区别又互相紧密联系的。 第一,由于腐朽的社会制度束缚着生产力的发展,阻碍着经济技术的进步,必须首先改变这种制度,争取民族独立和人民解放,才能为实现国家富强和人民富裕创造前提,开辟道路。第二,实现国家富强和人民富裕是民族独立,人民解放的最终目的和必然要求。 第一章 1、资本-帝国主义侵略给中国带来了什么?

课后习题及答案

1 文件系统阶段的数据管理有些什么缺陷试举例说明。 文件系统有三个缺陷: (1)数据冗余性(redundancy)。由于文件之间缺乏联系,造成每个应用程序都有对应的文件,有可能同样的数据在多个文件中重复存储。 (2)数据不一致性(inconsistency)。这往往是由数据冗余造成的,在进行更新操作时,稍不谨慎,就可能使同样的数据在不同的文件中不一样。 (3)数据联系弱(poor data relationship)。这是由文件之间相互独立,缺乏联系造成的。 2 计算机系统安全性 (1)为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据; (2)防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。 3. 自主存取控制缺点 (1)可能存在数据的“无意泄露” (2)原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记 (3)解决:对系统控制下的所有主客体实施强制存取控制策略 4. 数据字典的内容和作用是什么 数据项、数据结构 数据流数据存储和加工过程。 5. 一条完整性规则可以用一个五元组(D,O,A,C,P)来形式化地表示。 对于“学号不能为空”的这条完整性约束用五元组描述 D:代表约束作用的数据对象为SNO属性; O(operation):当用户插入或修改数据时需要检查该完整性规则; A(assertion):SNO不能为空; C(condition):A可作用于所有记录的SNO属性; P(procdure):拒绝执行用户请求。 6.数据库管理系统(DBMS)

:①即数据库管理系统(Database Management System),是位于用户与操作系统之间的 一层数据管理软件,②为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更 新及各种数据控制。 DBMS总是基于某种数据模型,可以分为层次型、网状型、关系型、面 向对象型DBMS。 7.关系模型:①用二维表格结构表示实体集,②外键表示实体间联系的数据模型称为关系模 型。 8.联接查询:①查询时先对表进行笛卡尔积操作,②然后再做等值联接、选择、投影等操作。 联接查询的效率比嵌套查询低。 9. 数据库设计:①数据库设计是指对于一个给定的应用环境,②提供一个确定最优数据模 型与处理模式的逻辑设计,以及一个确定数据库存储结构与存取方法的物理设计,建立起 既能反映现实世界信息和信息联系,满足用户数据要求和加工要求,又能被某个数据库管 理系统所接受,同时能实现系统目标,并有效存取数据的数据库。 10.事务的特征有哪些 事务概念 原子性一致性隔离性持续性 11.已知3个域: D1=商品集合=电脑,打印机 D3=生产厂=联想,惠普 求D1,D2,D3的卡尔积为: 12.数据库的恢复技术有哪些 数据转储和和登录日志文件是数据库恢复的

中国近代史纲要课后习题答案

1.怎样认识近代中国的主要矛盾、社会性质及其基本特征? (1)近代中国的主要矛盾 帝国主义和中华民族的矛盾;封建主义和人民大众的矛盾是近代中国的主要矛盾。中国近代社会的两对主要矛盾是互相交织在一起的,而帝国主义和中华民族的矛盾,是最主要的矛盾。 (2)社会性质:半殖民地半封建的性质。 中国社会的半殖民地半封建社会,是近代以来中国在外国资本主义势力的入侵及其与中国封建主义势力相结合的条件下,逐步形成的一种从属于资本主义世界体系的畸形的社会形态。 鸦片战争前的中国社会是封建社会。鸦片战争以后,随着外国资本-帝国主义的入侵,中国社会性质发生了根本性变化:独立的中国逐步变成半殖民地的中国;封建的中国逐步变成半封建的中国。 (3)基本特征 第一,资本--帝国主义侵略势力不但逐步操纵了中国的财政和经济命脉,而且逐步控制了中国的政治,日益成为支配中国的决定性力量。 第二,中国的封建势力日益衰败并同外国侵略势力相勾结,成为资本--帝国主义压迫、奴役中国人民的社会基础和统治支柱。 第三,中国的自然经济基础虽然遭到破坏,但是封建剥削制度的根基--封建地主的土地所有制依然在广大地区内保持着,成为中国走向近代化和民主化的严重障碍。 第四,中国新兴的民族资本主义经济虽然已经产生,并在政治、文化生活中起了一定作用,但是在帝国主义封建主义的压迫下,他的发展很缓慢,力量很软弱,而且大部分与外国资本--帝国主义和本国封建主义都有或多或少的联系。 第五,由于近代中国处于资本--帝国主义列强的争夺和间接统治之下,近代中国各地区经济、政治和文化的发展是极不平衡的,中国长期处于不统一状态。 第六,在资本--帝国主义和封建主义的双重压迫下,中国的广大人民特别是农民日益贫困化以致大批破产,过着饥寒交迫和毫无政治权力的生活。 中国半殖民地半封建社会及其特征,是随着帝国主义侵略的扩大,帝国主义与中国封建势力结合的加深而逐渐形成的。 2.如何理解近代中国的两大历史任务及其相互关系? (1)近代中国的两大历史任务: 第一,争取民族独立,人民解放;第二,实现国家富强,人民富裕。 (2)近代中国的两大历史任务的相互关系: 争取民族独立,人民解放和实现国家富强,人民富裕这两个历史任务,是互相区别又互相紧

严蔚敏版数据结构课后习题答案-完整版

第1章绪论 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据

类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解: ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C)

(完整版)数据库课后习题及答案

第一章数据库系统概述 选择题 1实体-联系模型中,属性是指(C) A.客观存在的事物 B.事物的具体描述 C.事物的某一特征 D.某一具体事件 2对于现实世界中事物的特征,在E-R模型中使用(A) A属性描述B关键字描述C二维表格描述D实体描述 3假设一个书店用这样一组属性描述图书(书号,书名,作者,出版社,出版日期),可以作为“键”的属性是(A) A书号B书名C作者D出版社 4一名作家与他所出版过的书籍之间的联系类型是(B) A一对一B一对多C多对多D都不是 5若无法确定哪个属性为某实体的键,则(A) A该实体没有键B必须增加一个属性作为该实体的键C取一个外关键字作为实体的键D该实体的所有属性构成键 填空题 1对于现实世界中事物的特征在E-R模型中使用属性进行描述 2确定属性的两条基本原则是不可分和无关联 3在描述实体集的所有属性中,可以唯一的标识每个实体的属性称为键 4实体集之间联系的三种类型分别是1:1 、1:n 、和m:n 5数据的完整性是指数据的正确性、有效性、相容性、和一致性 简答题 一、简述数据库的设计步骤 答:1需求分析:对需要使用数据库系统来进行管理的现实世界中对象的业务流程、业务规则和所涉及的数据进行调查、分析和研究,充分理解现实世界中的实际问题和需求。 分析的策略:自下而上——静态需求、自上而下——动态需求 2数据库概念设计:数据库概念设计是在需求分析的基础上,建立概念数据模型,用概念模型描述实际问题所涉及的数据及数据之间的联系。 3数据库逻辑设计:数据库逻辑设计是根据概念数据模型建立逻辑数据模型,逻辑数据模型是一种面向数据库系统的数据模型。 4数据库实现:依据关系模型,在数据库管理系统环境中建立数据库。 二、数据库的功能 答:1提供数据定义语言,允许使用者建立新的数据库并建立数据的逻辑结构 2提供数据查询语言 3提供数据操纵语言 4支持大量数据存储 5控制并发访问 三、数据库的特点 答:1数据结构化。2数据高度共享、低冗余度、易扩充3数据独立4数据由数据库管理系统统一管理和控制:(1)数据安全性(2)数据完整性(3)并发控制(4)数据库恢复 第二章关系模型和关系数据库 选择题 1把E-R模型转换为关系模型时,A实体(“一”方)和B实体(“多”方)之间一对多联系在关系模型中是通过(A)来实现的

(完整word版)数据结构课后习题及答案

填空题(10 * 1 '= 10') 一、概念题 22当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。 23当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。 2.6. 带头结点的单链表L中只有一个元素结点的条件是L->Next->Next==Null。 36循环队列的引入,目的是为了克服假溢出。 4.2. 长度为0的字符串称为空串。 4.5. 组成串的数据元素只能是字符。 4.8. 设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,又称P为模式。 7.2. 为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。 5.7. 广义表的深度是广义表中括号的重数 7.8. 有向图G可拓扑排序的判别条件是有无回路。 7.9. 若要求一个稠密图的最小生成树,最好用Prim算法求解。 8.8. 直接定址法法构造的哈希函数肯定不会发生冲突。 9.2. 排序算法所花费的时间,通常用在数据的比较和交换两大操作。 1.1. 通常从正确性、可读性、健壮性、时空效率等几个方面评价算法的(包括程序)的质量。 1.2. 对于给定的n元素,可以构造出的逻辑结构有集合关系、线性关系树形关系、图状关系四种。 1.3. 存储结构主要有顺序存储、链式存储、索引存储、散列存储四种。 1.4. 抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的数学特性不 变,都不影响其外部使用。 1.5. 一个算法具有五大特性:有穷性、确定性、可行性,有零个或多个输入、有一个或多个输入。 2.8. 在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句: s_>prior= p_>prior; s->next= p; p_>prior- next= s; p_>prior= s;。 2.9. 在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作 (如插入和删除)在各种情况下统一。 3.1. 队列是限制在表的一端进行插入和在另一端进行删除的线性表,其运算遵循先进先出原则。 3.2 .栈是限定尽在表位进行插入或删除操作的线性表。 3.5. 在链式队列中,判定只有一个结点的条件是(Q->rear==Q->fro nt)&&(Q->rear!=NULL) 。 3.7. 已知链队列的头尾指针分别是f和r,则将x入队的操作序列是node *p=(node *)malloc(node); p->next=x;] p_>next=NULL; if(r) {r->next=p; r=p;} else {r=p; f=p;}。 3.8. 循环队列的满与空的条件是(rear+1)%MAXSIZE==fornt 和(fron t=-1 &&rear+ ^=MAXSIZE) 。 4.3. 串是一种特殊的线性表,其特殊性表现在数据元素都是由字符组成。 4.7. 字符串存储密度是串值所占存储位和实际分配位的比值,在字符串的链式存储结构中其结点大小是可变的。 5.3. 所谓稀疏矩阵指的是矩阵中非零元素远远小于元素总数,则称该矩阵为矩阵中非零元素远远小于元素总数,则称该矩阵为稀 疏矩阵。 5.4. —维数组的逻辑结构是线性结构,存储结构是顺序存储结构;对二维或多维数组,分别按行优先和列优先两种?不同的存储 方式。 7.4. 在有向图的邻接矩阵表示中,计算第i个顶点入度的方法是求邻接矩阵中第?i列非10元素的个数。 7.10. AOV网中,结点表示活动,边表示活动之间的优先关系,AOE网中,结点表示事件,边表示活动。 9.1. 按排序过程中依据不同原则对内部排序方法进行分类,主要有选择排序、交换排序、插入排序归并排序等4类。 9.3 .在堆排序、快速排序和归并排序中若只从排序结果的稳定性考虑,则应选择归并排序方法;若只从平均情况下 排序最快考虑,则应选择快速排序方法;若只从最坏情况下排序最快且要节省类存考虑,则应选择堆排序方法。 9.4. 直接插入排序用监视哨的作用是存当前要的插入记录,可又省去查找插入位置时对是否出界的判断。 9.6. 设表中元素的初始状态是按键值递增的,则直接插入排序最省时间,快速排序最费时间。 4.9. 下列程序判断字符串s是否对称,对称则返回1,否则返回0;如?(abba”返回1, ? (”abab”)返回0. Int f (char*s) { Int i=0,j=0;

数据结构课后习题答案

数据结构习题集答案 第1章绪论 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。存储结构是数据结构在计算机中的表示。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据

类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解:ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C,k,&e) 操作结果:用e 返回复数C 的第k 元的值

近代史纲要 上篇综述 习题及答案

上篇综述作业及答案 一、单项选择题 1.中国封建社会的基本生产结构是:() A.手工业 B.农业经济 C.工业 D.小农经济 2.19世纪初,大肆向中国走私鸦片的国家是( ) A.美国 B.英国 C.日本 D.俄国 3.中国近代史上的第一个不平等条约是:() A.《望厦条约》B.《南京条约》C.《辛丑条约》 D.《马关条约》 4.《南京条约》中割让的中国领土是:() A.香港岛 B.九龙 C.新界 D.台湾 5.第一次鸦片战争中,美国强迫清政府签订的不平等条约是() A.《黄埔条约》 B.《虎门条约》 C.《望厦条约》 D.《瑷珲条约》 6.中国近代史的起点是:() A. 第一次鸦片战争 B. 第二次鸦片战争 C. 中日甲午战争 D. 八国联军侵华战争 7. 第一次鸦片战争后,中国逐步演变为:() A. 封建主义性质的国家 B. 半殖民地半资本主义性质的国家 C. 资本主义性质的国家 D. 半殖民地半封建性质的国家 8.标志着中国半殖民地半封建社会起点的事件是() A.英国的鸦片走私 B. 林则徐的虎门禁烟 C.1840年第一次鸦片战争 D.第二次鸦片战争 9.鸦片战争后,中国社会最主要的矛盾是:() A.地主阶级和农民阶级的矛盾B.资本—帝国主义和中华民族的矛盾C.封建主义和人民大众的矛盾D.清朝统治和汉族的矛盾 10.鸦片战争前,中国社会经济中占统治地位的是:() A.商品经济B.封建经济C.半殖民地经济D.资本主义经济 11.近代中国的历史表明,要争取争得民族独立和人民解放必须首先进行:() A. 反对帝国主义侵略的斗争 B. 反帝反封建的资产阶级民主革命 C. 反对封建主义压迫的斗争 D. 反对资产阶级的社会主义革命 12.在近代中国,实现国家富强和人民富裕的前提条件是:() A. 反对帝国主义的侵略 B. 争得民族独立和人民解放 C. 推翻封建主义的统治 D. 建立资本主义制度 13.中国工人阶级最早出现于:() A.十九世纪四、五十年代 B.十九世纪六十年代 C.十九世纪六、七十年代 D.十九世纪七十年代 14.近代中国产生的新的被压迫阶级是:() A农民阶级B工人阶级C资产阶级 D民族资产阶级 15.中国的资产阶级出现于:() A.十九世纪四、五十年代 B.十九世纪六十年代 C.十九世纪六、七十年代 D.十九世纪七十年代 单项答案1. D 2.B 3. B 4. A 5. C 6. A 7.D 8. C 9. B 10. B 11.B 12. B 13. A 14. B 15. C

课后题

在计算机局域网中,常用通信设备有(ABD) A集线器 B交换机 C调制解调器 D路由器 线缆标准化工作主要由哪一儿歌协会制定?(C) A OSI B ITU-T C EIA D IEEE 802协议族是由以下面那一个组织定义?(C) A OSI B EIA C IEEE D ANSI 衡量网络性能的两个主要指标为(AC) A带宽 B可信度 C延迟 D距离 局域网区别其他网络主要体现在以下(ABCD)方面。 A网络所覆盖的物理范围 B网络所使用的传输技术 C网络的拓扑结构 D带宽 会产生单点故障的是下列(ABC)拓扑结构 A总线型 B环型 C网状结构 D星型 数据交换技术包括(ABC) A电路交换 B报文交换 C分组交换 D文件交换 (B)拓扑结构会受到网络中信号反射的影响? A网型 B总线型 C环型 D星型 OSI参考模型按照顺序有哪些层?(C) C应用层、表示层、会话层、传输层、网络层、数据链路层、物理层在OSI七层模型中,网络层的功能有(B) A确保数据的传送正确无误

B确定数据包如何转发与路由 C在信道上传比特流 D纠错与流控 在OSI七层模型中,(B)哪一层的实现对数据加密。 A传输层 B表示层 C应用层 D网络层 网络层传输的数据叫做(B) A比特 B包 C段 D帧 TCP/IP协议栈中传输层协议有(AC) A TCP B ICMP C UDP D IP 数据从上到下封装的格式为(B) A比特包帧段数据 B数据段包帧比特 C比特帧包段数据 D数据包段帧比特 物理层定义了物理接口的哪些特性?(ABCD) A机JIE特性 B电气特性 C功能特性 D接口特性 细同轴电缆(10Base2)传输距离约达(A)粗同轴电缆(10Base5)的传输距离为(B) A 200米 B 500米 C 150米 D 485米 通常在网吧里,LAN采用的拓扑结构和网线类型为(C) A总线型和STP B总心型和UTP C形型和UTP D环型和STP 双绞线电缆为什么能代替网络中的细同轴电缆。(D) A双绞线电缆可靠性高 B双绞线电缆抗噪性更好 C细同轴电缆更廉价 D双绞线电缆更便于安装 在布线时,细缆和粗缆通常应用在(D)拓扑结构中。

近代史课后题答案整理

中国近代史纲要课后习题答案 1怎样认识近代中国的主要矛盾、社会性质? (1)近代中国的主要矛盾 帝国主义和中华民族的矛盾;封建主义和人民大众的矛盾是近代中国的主要矛盾。中国近代社会的两对主要矛盾是互相交织在一起的,而帝国主义和中华民族的矛盾,是最主要的矛盾。(2)社会性质:半殖民地半封建的性质。 中国社会的半殖民地半封建社会,是近代以来中国在外国资本主义势力的入侵及其与中国封建主义势力相结合的条件下,逐步形成的一种从属于资本主义世界体系的畸形的社会形态。鸦片战争前的中国社会是封建社会。鸦片战争以后,随着外国资本-帝国主义的入侵,中国社会性质发生了根本性变化:独立的中国逐步变成半殖民地的中国;封建的中国逐步变成半封建的中国。 2.如何理解近代中国的两大历史任务及其相互关系? (1)近代中国的两大历史任务: 第一,争取民族独立,人民解放;第二,实现国家富强,人民富裕。 (2)近代中国的两大历史任务的相互关系: 争取民族独立,人民解放和实现国家富强,人民富裕这两个历史任务,是互相区别又互相紧密联系的。 第一,由于腐朽的社会制度束缚着生产力的发展,阻碍着经济技术的进步,必须首先改变这种制度,争取民族独立和人民解放,才能为实现国家富强和人民富裕创造前提,开辟道路。近代以来的历史表明,争得争取民族独立和人民解放,必须进行反帝反封建的民主革命。第二,实现国家富强和人民富裕是民族独立,人民解放的最终目的和必然要求。 第一章反对外国侵略的斗争 3.中国近代历次反侵略战争失败的根本原因是什么? 第一,近代中国社会制度的腐败是反侵略战争失败的根本原因。 在1840年以后中国逐渐沦为半殖民地半封建社会的过程中,清王朝统治者从皇帝到权贵,大都昏庸愚昧,不了解世界大势,不懂得御敌之策。由于政治腐败、经济落后和文化保守,一方面使清朝统治阶级封闭自守,妄自尊大,骄奢淫逸,盲目进攻;另一方面又使统治者和清军指挥人员在战争面前完全没有应变的能力和心态,不适应于近代战争,不少将帅贪生怕死,临阵脱逃,有的甚至出卖国家和民族的利益。清政府尤其害怕人民群众,担心人民群众动员起来会危及自身统治,所以不敢发动和依靠人民群众的力量。 清朝统治集团在对外战争中妥协退让求和投降的一系列做法,已经使他失去在中国存在的理由,不推翻他是不能取得反侵略战争胜利的。 第二,近代中国经济技术的落后是反侵略战争失败的另一个重要原因。 当时的英国已经历过工业革命,资本主义生产力获得突飞猛进的发展,而中国仍停留在封建的自然经济水平上。经济技术的落后直接造成军事装备的落后,军队指挥员不了解近代军事战术,从而造成军队素质和战斗力的低下。 经济技术落后是反侵略战争失败的重要原因,但并不表明经济技术落后就一定在反侵略战争中失败。正是因为当时的中国政府不能很好地组织反侵略战争,不能发动和利用人民群众的力量,甚至压制人民群众,其失败是不可避免的。 第二章对国家出路的早期探索 4、如何认识太平天国农民战争的意义和失败的原因、教训? (1)太平天国农民战争的意义 太平天国起义虽然失败了,但它具有不可磨灭的历史功绩和重大的历史意义。 第一,太平天国起义沉重打击了封建统治阶级,强烈震撼了清政府的统治根基,加速了清王

最全数据结构课后习题答案耿国华版

绪论第1章 √(2)×(3)2.(1)×C )C(3(1)A(2)3. 的语句频度5.计算下列程序中x=x+1for(i=1;i<=n;i++) for(j=1;j<=i;j++) for(k=1;k<=j;k++) x=x+1; 的语句频度为:【解答】x=x+1=n(n+1)(n+2)/6 )+……+(1+2+……+n)T(n)=1+(1+2)+(1+2+3 并确定算法中每一),p(xx+ax+a+…….+ax的值6.编写算法,求一元多项式p(x)=a n20nn20n1规定算法中不能使用要求时间复杂度尽可能小,语句的执行次数和整个算法的时间复杂度,算法的输入和输出)。n,输出为P(x求幂函数。注意:本题中的输入为a(i=0,1,…n)、x和0in采用下列方法1)通过参数表中的参数显式传递()通过全局变量隐式传递。讨论两种方法的优缺点,并在算法中以你认为较好的一种实(2 现输入输出。【解答】1)通过参数表中的参数显式传递(优点:当没有调用函数时,不占用存,调用结束后形参被释放,实参维持,函数通用 性强,移置性强。缺点:形参须与实参对应,且返回值数量有限。 )通过全局变量隐式传递(2 优点:减少实参与形参的个数,从而减少存空间以及传递数据时的时间消耗 缺点:函数通用性降低,移植性差 算法如下:通过全局变量隐式传递参数PolyValue() { int i,n; float x,a[],p; nn=”);printf(“\ scanf(“%f”,&n); nx=”);printf(“\ scanf(“%f”,&x); for(i=0;i

课后习题答案大全

《新视野大学英语读写教程(第二版)第三册》课后答案 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=16&fromuid=191597 新视野大学英语读写教程(第二版)第一册》课后答案 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=14&fromuid=191597 《马·克思主·义基本原理概论》新版完整答案 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=37&fromuid=191597 《毛·泽东思想和中国特色社会主·义理论体系概论》习题答案(2008年修订版的) https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=48&fromuid=191597 21世纪大学实用英语综合教程(第一册)课后答案及课文翻译 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=4&fromuid=191597 西方经济学(高鸿业版)教材详细答案 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=60&fromuid=191597 《新视野大学英语读写教程(第二版)第二册》课后答案 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=15&fromuid=191597 思想道德修养与法律基础课后习题答案 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=63&fromuid=191597 《中国近代史纲要》完整课后答案(高教版) https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=81&fromuid=191597 《全新版大学英语综合教程》(第三册)练习答案及课文译文 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=77&fromuid=191597 《全新版大学英语综合教程》(第一册)练习答案及课文译文 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=75&fromuid=191597 《会计学原理》同步练习题答案 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=305&fromuid=191597 《微观经济学》课后答案(高鸿业版) https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=283&fromuid=191597 《统计学》课后答案(第二版,贾俊平版) https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=29&fromuid=191597 《西方经济学》习题答案(第三版,高鸿业)可直接打印 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=289&fromuid=191597 毛邓三全部课后思考题答案(高教版)/毛邓三课后答案 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=514&fromuid=191597 新视野大学英语听说教程1听力原文及答案下载 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=2531&fromuid=191597 西方宏观经济高鸿业第四版课后答案 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=2006&fromuid=191597 《管理学》经典笔记(周三多,第二版) https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=280&fromuid=191597 《中国近代史纲要》课后习题答案 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=186&fromuid=191597 《理论力学》课后习题答案 https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=55&fromuid=191597 《线性代数》(同济第四版)课后习题答案(完整版) https://www.doczj.com/doc/d815637865.html,/viewthread.php?tid=17&fromuid=191597

最全数据结构课后习题答案(耿国华版[12bb]

第1章绪论工程大数电习题答案册工程大数电习题答案 册 2.(1)×(2)×(3)√ 3.(1)A(2)C(3)C 5.计算下列程序中x=x+1的语句频度 for(i=1;i<=n;i++) for(j=1;j<=i;j++) for(k=1;k<=j;k++) x=x+1; 【解答】x=x+1的语句频度为: T(n)=1+(1+2)+(1+2+3)+……+(1+2+……+n)=n(n+1)(n+2)/6 6.编写算法,求一元多项式p n(x)=a0+a1x+a2x2+…….+a n x n的值p n(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。注意:本题中的输入为a i(i=0,1,…n)、x和n,输出为P n(x0)。算法的输入和输出采用下列方法 (1)通过参数表中的参数显式传递 (2)通过全局变量隐式传递。讨论两种方法的优缺点,并在算法中以你认为较好的一种实现输入输出。 【解答】 (1)通过参数表中的参数显式传递 优点:当没有调用函数时,不占用内存,调用结束后形参被释放,实参维持,函数通用性强,移置性强。 缺点:形参须与实参对应,且返回值数量有限。 (2)通过全局变量隐式传递 优点:减少实参与形参的个数,从而减少内存空间以及传递数据时的时间消耗 缺点:函数通用性降低,移植性差 算法如下:通过全局变量隐式传递参数 PolyValue() { int i,n; float x,a[],p; printf(“\nn=”); scanf(“%f”,&n); printf(“\nx=”); scanf(“%f”,&x); for(i=0;i

相关主题
相关文档 最新文档