数据结构课后习题

数据结构课后习题
数据结构课后习题

第一章

3.(1)A(2)C(3)D

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

scanf(“%f ”,&a*i+); /*执行次数:n次*/

p=a[0];

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

{ p=p+a[i]*x; /*执行次数:n次*/

x=x*x;}

printf(“%f”,p);

}

算法的时间复杂度:T(n)=O(n)

通过参数表中的参数显式传递

float PolyValue(float a[ ], float x, int n)

{

float p,s;

int i;

p=x;

s=a[0];

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

{s=s+a[i]*p; /*执行次数:n次*/

p=p*x;}

return(p);

}

算法的时间复杂度:T(n)=O(n)

第二章

1.填空:

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

(2)线性表有顺序和链式两种存储结构。在顺序表中,线性表的长度在数组定义时就已经确定,是静态保存,在链式表中,整个链表由“头指针”来表示,单链表的长度是动态保存。

(3)在顺序表中,逻辑上相邻的元素,其物理位置_一定_____相邻。在单链表中,逻辑上相邻的元素,其物理位置不一定相邻。

(4)在带头结点的非空单链表中,头结点的存储位置由头指针指示,首元素结点的存储位置由头结点指示,除首元素结点外,其它任一元素结点的存储位置由其直接前趋的next域指示。

2.选择题

(1) A

(2) 已知L是无表头结点的单链表,且P结点既不是首元素结点,也不是尾元素结点。按要求从下列语句中选择合适的语句序列。

a. 在P结点后插入S结点的语句序列是:D、A。

b. 在P结点前插入S结点的语句序列是:G、K、H、D、A。

c. 在表首插入S结点的语句序列是:E、L。

d. 在表尾插入S结点的语句序列是:(K)、I、A、F。

供选择的语句有:

A P->next=S;

B P->next= P->next->next;

C P->next= S->next;

D S->next= P->next;

E S->next= L;

F S->next= NULL;

G Q= P;

H while (P->next!=Q) P=P->next;

I while (P->next!=NULL) P=P->next;

J P= Q;

K P= L;

L L= S;

M L= P;

(3) D

(4) D

(5) D

4. 已知顺序表L递增有序,编写一个算法,将X插入到线性表的适当位置上,以保持线性表的有序性。

void inserX(Seqlist *L,Elemtype x){

int i;

i=L->length-1;

while(i>=0&& xelem[i]){

L->elem[i+1]=L->elem[i];

i--;

}

L->length++;

}

7试分别以不同的存储结构实现线性表的就地逆值的算法,即在原表的存储空间中将线性表(a1,a2,…,an)逆置为(an,an-1,…,a1)。

(1)以顺序表作存储结构,设线性表存于a[1:arrsize]的前elenum个分量中。

void reverseqlist(Seqlist *L){

int i;

int temp;

for(i=0;ilength/2;i++){

temp=L->elem[i];

L->elem[i]=L->elem[L->length-i-1];

L->elem[L->length-i-1]=temp;

}

}

(2)以单链表作存储结构。

void reverselinklist(linklist *head){

Linklist *p,*q;

p=head->next; head->next=NULL;

while(p->next!=NULL){

q=p->next;

p->next=head->next;

head->next=p;

p=q;

}

}

11将线性表A=(a1,a2,……am), B=(b1,b2,……bn)合并成线性表C,

C=(a1,b1,……am,bm,bm+1,…….bn)m<=n,

C=(a1,b1, ……an,bn,an+1,……am) m>n,

线性表A、B、C以单链表作为存储结构,且C表利用A表和B表中的结点空间构成。

注意:单链表的长度值m和n均未显式存储。

【解答】算法如下:

LinkList merge(LinkList A,LinkList B,LinkList C)

{

Node *pa,*qa,*pb,*qb,*p;

pa=A->next;/*pa表示A的当前结点*/

pb=B->next;

p=A;/ *利用p来指向新连接的表的表尾,初始值指向表A的头结点*/

while(pa!=NULL&&pb!=NULL)/*利用尾插法建立连接之后的链表*/

{

qa=pa->next;

qb=qb->next;

p->next=pa;/*交替选择表A和表B中的结点连接到新链表中;*/

p=pa;

p->next=pb;

p=pb;

pa=qa;

pb=qb;

}

if(pa!=NULL)p->next=pa;/*A的长度大于B的长度*/

if(pb!=NULL)p->next=pb;/*B的长度大于A的长度*/

C=A;

Return(C);

}

第三章

1 B

2 C

3 C

8假设表达式由单字母变量和双目四则运算构成。试写一个算法,将一个通常书写形式且书写正确的表达式转为逆波兰式。

【分析】算法的思想:所有的变量在逆波兰式中出现的先后顺序和在原表达式中出现的相同,因此只需要设立一个"栈",根据操作符的"优先级"调整它们在逆波兰式中出现的顺序。#include

#include

#define STACK_INIT_SIZE 100

#define STACK_INCREAMENT 10

typedef struct { //栈

char *base;

char *top;

int stackSize;

} Stack;

void initStack(Stack &stack) { //初始化栈

stack.base = stack.top = (char *)malloc(sizeof(char) * STACK_INIT_SIZE);

stack.stackSize = STACK_INIT_SIZE;

}

void push(Stack &S, char p) { //入栈

if(S.top - S.base >= S.stackSize) {

S.base=(char*)realloc(S.base,(S.stackSize+STACK_INCREAMENT)*sizeof(char));

S.top = S.stackSize + S.base;

S.stackSize += STACK_INCREAMENT;

}

*S.top++ = p;

}

void pop(Stack &stack, char &p) { //出栈

if(stack.base == stack.top) {

p = NULL; return ;

}

p = *--stack.top;

}

char getTop(Stack stack) { //获得栈顶元素

if(stack.base == stack.top) return NULL;

return *(stack.top - 1);

}

bool isAlpha(char p) { //判断是不是字母

return (p >= 'a' && p <= 'z') || (p >= 'A' && p <= 'Z') ? true : false;

}

int precede(char a, char b) {

switch (a) {

case '/' :

case '*' : return 1; break;

case '+' :

case '-' :

switch(b) {

case '/' :

case '*' : return -1; break;

default : return 1;

}

break;

default :

switch(b) {

case '#' : return 0; break;

default : return -1;

}

}

}

void NiBoLan(char *str, char *newStr) { //转换成逆波兰式

Stack stack;

initStack(stack);

char *p, *q, c;

p = str; q = newStr;

push(stack, '#');

while(*p) {

if(isAlpha(*p)) *q++ = *p;

else {

c = getTop(stack);

if(precede(*p, c) > 0) push(stack, *p);

else {

while(precede(getTop(stack), *p) >= 0 && *p) {

pop(stack, c); *q++ = c;

}

push(stack, *p);

}

}

p ++;

}

}

void main() {

char str[100];

char newStr[100];

int i;

for(i=0; i<100; i++) str[i] = newStr[i] = '\0';

printf("请输入表达式:\n"); scanf("%s", str);

NiBoLan(str, newStr);

printf("其对应的逆波兰式为:%s\n", newStr);

}

10 要求循环队列不损失一个空间全部都能得到利用,设置一个标志tag,以tag为0或1来区分头尾指针相同时的队列状态的空与满,请编写与此相应的入队与出队算法。

入队算法:

int EnterQueue(SeqQueue *Q,QueueElementType x)

{

/*将元素x入队*/

if(Q->front==Q->front &&tag==1)/*队满*/

return(FALSE);

if(Q->front==Q->front &&tag==0)/*x入队前队空,x入队后重新设置标志*/

tag=1;

Q->elememt[Q->rear]=x;

Q->rear=(Q->rear+1)%MAXSIZE;/*设置队尾指针*/

Return(TRUE);

}

出队算法:

int DeleteQueue( SeqQueue *Q ,QueueElementType *x)

{

/*删除队头元素,用x返回其值*/

if(Q->front==Q->rear &&tag==0)/*队空*/

return(FALSE);

*x=Q->element[Q->front];

Q->front=(Q->front+1)%MAXSIZE;/*重新设置队头指针*/

if(Q->front==Q->rear)

tag=0;/*队头元素出队后队列为空,重新设置标志域*/

Return(TUUE);

}

15 (1)功能:将栈中元素倒置。

(2)功能:删除栈中的e 元素。

(3)功能:将队列中的元素倒置。

第四章

1.设s=’I AM A STUDENT’,t=’GOOD’,q=’WORKER’。给出下列操作的结果:

【解答】StrLength(s)=14;

SubString(sub1,s,1,7) sub1=’I AM A ’;

SubString(sub2,s,7,1) sub2=’ ’;

StrIndex(s,4,’A’)=6;

StrReplace(s,’STUDENT’,q); s=’I AM A WORKER’;

StrCat(StrCat(sub1,t),StrCat(sub2,q)) sub1=’I AM A GOOD WORKER’。

4. 叙述以下每对术语的区别:空串和空格串;串常量与串变量;主串和子串;串变量的名字和串变量的值。

【解答】不含任何字符的串称为空串,其长度为0。仅含有空格字符的串称为空格串,其长度为串中空格字符的个数。空格符可用来分割一般的字符,便于人们识别和阅读,但计算串长时应包括这些空格符。空串在串处理中可作为任意串的子串。

用引号(数据结构教学中通常用单引号,而C语言中用双引号)括起来的字符序列称为串常量,串值可以变化的量称为串变量。

串中任意个连续的字符组成的子序列被称为该串的子串。包含子串的串又被称为该子串的主串。子串在主串中第一次出现的第一个字符的位置称子串在主串中的位置。

串变量的与其它变量一样,要用名字引用其值,串变量的名字也是标识符,串变量的值可以修改。

5.已知:s =" (xyz)+*",t =" (x+z)*y"。试利用联结、求子串和置换等基本运算,将s 转化为t 。

【答案】本题有多种解法,下面是其中的一种:

(1)s1=substr(s,3,1)/*取出子串:"y"

(2)s2=substr(s,6,1)/*取出子串:"+"

(3)s3=substr(s,1,5)/*取出子串:" (xyz) "

(4)s4=substr(s,7,1)/*取出子串:"*"

(5)s5=replace(s3,3,1,s2)/*形成部分串:" (x+z) "

(6)s=s5/*s4/*s1 /*形成串t即" (x+z)*y"

【解析】题中所给操作的含义如下:

/*:连接函数,将两个串连接成一个串

substr(s,i,j):取子串函数,从串s的第i个字符开始,取连续j个字符形成子串replace(s1,i,j,s2):置换函数,用s2串替换s1串中从第i个字符开始的连续j个字符

8编写下列算法:

(1)将顺序串r中所有值为ch1的字符换成ch2的字符。

(2)将顺序串r中所有字符按照相反的次序仍存放在r中。

(3)从顺序串r中删除其值等于ch的所有字符。

(4)从顺序串r1中第index 个字符起求出首次与串r2相同的子串的起始位置。

(5)从顺序串r中删除所有与串r1相同的子串。

【解答】

(1)

Void replace (Str *r, char ch1,char ch2) //将串r中所有值为ch1的字符换成ch2的字符

{

for(int i=0;ilen;i++)

if (r->vec[i]==ch1) r->vec[i]=ch2;

return;

}

(2)

Void converse(str *r) //将串r中所有字符按照相反的次序存放在r 中

{

for(int i=0;i<(r->len/2);i++){

Char ch=r->vec[i];

r->vec[i]=r->vec[r->len-1-i];

r->vec[r->len-1-i]=ch;

}

Return;

}

(3)

Void delete(str *r,char ch) //从串r中删除其值等于ch的所有字符

{

int i=0; int len=r.len;

While (i

if (r->vec[i]==ch} {

for(j=i; j

r->vec[j]=r-vec[j+1];

len--;

}

else

i++;

}

return;

}

(4)

int position(str r1,int index,char r2)

//从串r1中第index 个字符起求出首次与字符r2相同的子串的起始位置{

if (index<1||index>r.len) return ERROR;

int i=index;

while (r,vec[i]!=r2&&i

if (i=r.len) ,cout<<”不存在”;return; -

return i+1;

}

(5)

int DelSub(SString *r,SString r1){

int i,j,t;

if(r->len

for(i=0;ilen-r1.len;){

j=i;

for(t=0;t

if(r->ch[j++]!=r1.ch[t]) break;

if(t==r1.len){

for(j=i;j+r1.lenlen;j++)

r->ch[j]=r->ch[j+r1.len];

r->len-=r1.len;

}

if(t!=r1.len) i++;

}

return(1);

}

课本119页8_1题.c课本119页8_2题.c课本119页8_3题.c课本119页8_4题.c

课本119页8_5题.c

第五章

1.假设有6行8列的二维数组A,每个元素占用6个字节,存储器按字节编址。已知A的基地址为1000,计算:

(1)数组A共占用多少字节;(288)

(2)数组A的最后一个元素的地址;(1282)

(3)按行存储时,元素A36的地址;(1126)

(4)按列存储时,元素A36的地址;(1192)

3. 设有一个上三角矩阵A,将其上三角中的元素逐列压缩存储到一个n(n+1)/2的一维数组C (下标从1开始),请给出计算上三角矩阵中任意元素a ij ( i< j )在一维数组C中位置的公式。K=[n+n-(i-2)]*(i-1)/2+[j-(i-1)]=(2n-i+2)*(i-1)/2+(j-i+1) i<=j

4.设有三对角矩阵A n×n,将其三条对角线上的元素逐行的存于数组B[1..3n-2]中,使得B[k]=a ij,求:(1)用i,j表示k的下标变换公式;(2)用k表示i、j的下标变换公式。

【解答】(1)k=2(i-1)+j

(2) i=[k/3]+1, j=[k/3]+k%3 ([ ]取整,%取余)

7.编写一个在十字链表按三元组表的形式打印输出。

解:

矩阵相加就是将两个矩阵中同一位置的元素值相加。由于两个稀疏矩阵的非零元素按三元组表形式存放,在建立新的三元组表C时,为了使三元组元素仍按行优先排列,所以每次插入的三元组不一定是A的,按照矩阵元素的行列去找A中的三元组,若有,则加入C,同时,这个元素如果在B中也有,则加上B的这个元素值,否则这个值就不变;如果A中没有,则找B,有则插入C,无则查找下一个矩阵元素。

#define MaxSize 10 //用户自定义

typedef int DataType; //用户自定义

typedef struct

{ //定义三元组

int i,j;

DataType v;

}TriTupleNode;

typedef struct

{ //定义三元组表

TriTupleNode data[MaxSize];

int m,n,t;//矩阵行,列及三元组表长度

}TriTupleTable;

//以下为矩阵加算法

void AddTriTuple( TriTupleTable *A, TriTupleTable *B, TriTupleTable *C)

{//三元组表表示的稀疏矩阵A,B相加

int k,l;

DataType temp;

C-> m=A-> m;//矩阵行数

C-> n=A-> n;//矩阵列数

C-> t=0; //三元组表长度

k=0; l=0;

while (k t&&l t)

{if((A-> data[k].i==B-> data[l].i)&&(A-> data[k].j==B-> data[l].j))

{temp=A-> data[k].v+B-> data[l].v;

if (!temp)//相加不为零,加入C

{C-> data[c-> t].i=A-> data[k].i;

C-> data[c-> t].j=A-> data[k].j;

C-> data[c-> t++].v=temp;

}

k++;l++;

}

if ((A-> data[k].i==B-> data[l].i)&&(A-> data[k].j data[l].j)) ||(A-> data[k].i data[l].i)//将A中三元组加入C

{C-> data[c-> t].i=A-> data[k].i;

C-> data[c-> t].j=A-> data[k].j;

C-> data[c-> t++].v=A-> data[k].v;

k++;

}

if ((A-> data[k].i==B-> data[l].i)&&(A-> data[k].j> B-> data[l].j)) ||(A-> data[k].i> B-> data[l].i)//将B中三元组加入C

{C-> data[c-> t].i=B-> data[l].i;

C-> data[c-> t].j=B-> data[l].j;

C-> data[c-> t++].v=B-> data[l].v;

l++;

}

}

while (k t)//将A中剩余三元组加入C

{C-> data[c-> t].i=A-> data[k].i;

C-> data[c-> t].j=A-> data[k].j;

C-> data[c-> t++].v=A-> data[k].v;

k++;

}

while (l t)//将B中剩余三元组加入C

{C-> data[c-> t].i=B-> data[l].i;

C-> data[c-> t].j=B-> data[l].j;

C-> data[c-> t++].v=B-> data[l].v;

l++;

}

}

9.求下列广义表运算的结果。

(1)HEAD[((a,b),(c,d))]

(2)TAIL[((a,b),(c,d))]

(3)TAIL[HEAD[((a,b),(c,d))]]

(4)HEAD[TAIL[HEAD[((a,b),(c,d))]]]

(5)TAIL[HEAD[TAIL[((a,b),(c,d))]]]

解答:

(1)(a,b)(2)((c,d))(3)(b)(4)b(5)(d)

第六章

6.1分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。

【解答】

具有3个结点的树具有3个结点的二叉树

6.4 假设一棵二叉树的先序排列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请画出该二叉树。

6.5已知二叉树有50个叶子结点,则该二叉树的总结点数至少应有多少个?

【解答】n0表示叶子结点数,n2表示度为2的结点数,则n0 = n2+1

所以n2=n0 –1=49,当二叉树中没有度为1的结点时,总结点数n=n0+n2=99

6.8 画出与下列已知序列对应的树T:

树的先根次序访问序列为GFKDAIEBCHJ;

树的后根次序访问序列为DIAEKFCJHBG.

解答:

树的后根遍历相当于二叉树的中序遍历。

先转换为二叉树,在根据左孩子右兄弟的规则转换为数。

6.9 假设通讯的电文仅由8个字母组成,字母在电文中出现的频率分别为:

0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10

请为这8个字母设计哈夫曼编码。

【解答】答案不唯一。

构造哈夫曼树如下:

哈夫曼编码为:

I1:11111I5:1100

I2:11110I6:10

I3:1110 I7: 01

I4:1101 I8: 00

或者

6.11画出如下图所示树对应的二叉树。

【解答】

14.已知二叉树按照二叉链表方式存储,编写算法。计算二叉树中叶子结点的数目。

int LeafCount_BiTree(Bitree T)//求二叉树中叶子结点的数目

{

if(!T) return 0; //空树没有叶子

else if(!T->lchild&&!T->rchild) return 1; //叶子结点

else return Leaf_Count(T->lchild)+Leaf_Count(T->rchild);//左子树的叶子数加上右子树的叶子数

}//LeafCount_BiTree

15.编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。

void Del_Sub_x(Bitree T,int x)//删除所有以元素x为根的子树

{

if(T->data==x) Del_Sub(T); //删除该子树

else

{

if(T->lchild) Del_Sub_x(T->lchild,x);

if(T->rchild) Del_Sub_x(T->rchild,x); //在左右子树中继续查找

}//else

}//Del_Sub_x

void Del_Sub(Bitree T)//删除子树T

{

if(T->lchild) Del_Sub(T->lchild);

if(T->rchild) Del_Sub(T->rchild);

free(T);

}//Del_Sub

22.已知二叉树按照二叉链表方式存储,利用栈的基本操作写出先序遍历非递归形式的算法。【解答】

Void PreOrder(BiTree root) /*先序遍历二叉树的非递归算法*/

{

InitStack(&S);

p=root;

while(p!=NULL || !IsEmpty(S) )

{ if(p!=NULL)

{

Visit(p->data);

push(&S,p);

p=p->Lchild;

}

else

{

Pop(&S,&p);

p=p->RChild;

}

}

}

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

第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章绪论 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 文件系统阶段的数据管理有些什么缺陷试举例说明。 文件系统有三个缺陷: (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)数据元素是数据的最小单位。 (ㄨ)(4)数据的逻辑结构和数据的存储结构是相同的。 (ㄨ)(5)程序和算法原则上没有区别,所以在讨论数据结构时可以通用。 (√)(6)从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。 (√)(7)数据的存储结构是数据的逻辑结构的存储映像。 (√)(8)数据的物理结构是指数据在计算机实际的存储形式。 (ㄨ)(9)数据的逻辑结构是依赖于计算机的。 (√)(10)算法是对解题方法和步骤的描述。 二.填空题 (1)数据有逻辑结构和存储结构两种结构。 (2)数据逻辑结构除了集合以外,还包括:线性结构、树形结构和图形结构。(3)数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。(4)树形结构和图形结构合称为非线性结构。 (5)在树形结构中,除了树根结点以外,其余每个结点只有 1 个前趋结点。(6)在图形结构中,每个结点的前趋结点数和后续结点数可以任意多个。(7)数据的存储结构又叫物理结构。 (8)数据的存储结构形式包括:顺序存储、链式存储、索引存储和散列存储。(9)线性结构中的元素之间存在一对一的关系。 (10)树形结构结构中的元素之间存在一对多的关系, (11)图形结构的元素之间存在多对多的关系。 (12)数据结构主要研究数据的逻辑结构、存储结构和算法(或运算)三个方面的容。 (13)数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的关系的有限集合。 (14)算法是一个有穷指令的集合。 (15)算法效率的度量可以分为事先估算法和事后统计法。 (16)一个算法的时间复杂性是算法输入规模的函数。 (17)算法的空间复杂度是指该算法所耗费的存储空间,它是该算法求解问题规模n 的函数。 (18)若一个算法中的语句频度之和为T(n)=6n+3nlog2n,则算法的时间复杂度为O (nlog2n)。

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

第一章数据库系统概述 选择题 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)来实现的

数据结构习题及答案精编版

第一章 1.在数据结构中,从逻辑上可以把数据结构分为(C ) A.动态结构和静态结构 B. 紧凑结构和非紧凑结构 C.线性结构和非线性结构 D. 内部结构和外部结构 ● 2.在数据结构中,与所使用的计算机无关的是( A ) A. 逻辑结构 B. 存储结构 C. 逻辑和存储结构 D. 物理结构 3.下面程序的时间复杂度为____O(mn)_______。 for (int i=1; i<=m; i++) for (int j=1; j<=n; j++ ) S+=i 第二章线性表 ●链表不具备的特点是(A) A 可以随机访问任一结点(顺序) B 插入删除不需要移动元素 C 不必事先估计空间 D 所需空间与其长度成正比 2. 不带头结点的单链表head为空的判定条件为(A ),带头结点的单链表head为空的判定条件为(B ) A head==null B head->next==null C head->next==head D head!=null ●3.在线性表的下列存储结构中,读取元素花费时间最少的是(D) A 单链表 B 双链表 C 循环链表 D 顺序表 ● 4.对于只在表的首、尾两端进行手稿操作的线性表,宜采用的存储结构为(C) A 顺序表 B 用头指针表示的单循环链表 C 用尾指针表示的单循环链表 D 单链表 ● 5.在一个具有n 个结点的有序单链表中插入一个新的结点,并保持链表元素仍然有序, 则操作的时间复杂度为( D ) A O(1) B O(log2n) C O(n2) D O(n) ● 6.在一个长度为n (n>1)的单链表上,设有头和尾两个指针,执行(B)操作与链表的长 度有关 A 删除单链表中第一个元素 B 删除单链表中最后一个元素 C 在第一个元素之前插入一个新元素 D 在最后一个元素之后插入一个新元素 ●7.与单链表相比,双向链表的优点之一是(D) A 插入删除操作更简单 B 可以进行随机访问 C 可以省略表头指针或表尾指针 D 顺序访问相邻结点更容易 ●8.若list是某带头结点的循环链表的头结点指针,则该链表最后那个链结点的指针域 (头结点的地址)中存放的是( B ) A list的地址 B list的内容 C list指的链结点的值 D 链表第一个链结点的地址 ●9.若list1和list2分别为一个单链表与一个双向链表的第一个结点的指针,则( B ) A list2比list1占用更多的存储单元 B list1与list2占用相同的存储单元 C list1和list2应该是相同类型的指针变量 D 双向链表比单链表占用更多的存储单元 10.链表中的每个链结点占用的存储空间不必连续,这句话正确吗? (不正确) 11. 某线性表采用顺序存储结构,元素长度为4,首地址为100,则下标为12的(第13个)元素的存储地址为148。V 100+4*12=148 11.在顺序表的(最后一个结点之后)插入一个新的数据元素不必移动任何元素。 12.若对线性表进行的操作主要不是插入删除,则该线性表宜采用(顺序)存储结构,若频繁地对线性表进行插入和删除操作,则该线性表宜采用( 链 )存储结构。

(完整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 元的值

数据结构课后习题及答案

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

课后题

在计算机局域网中,常用通信设备有(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. 填空 ⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 【解答】数据元素 ⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。 【解答】数据项,数据元素 【分析】数据结构指的是数据元素以及数据元素之间的关系。 ⑶从逻辑关系上讲,数据结构主要分为()、()、()和()。 【解答】集合,线性结构,树结构,图结构 ⑷数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。 【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系 ⑸算法具有五个特性,分别是()、()、()、()、()。 【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性 ⑹算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。 【解答】自然语言,程序设计语言,流程图,伪代码,伪代码 ⑺在一般情况下,一个算法的时间复杂度是()的函数。 【解答】问题规模 ⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。 【解答】Ο(1),Ο(nlog2n) 【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。 2. 选择题 ⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。 A 线性结构 B 非线性结构 C 存储位置 D 指针 【解答】C,D 【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。

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

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

数据结构习题及参考答案

习题1 一、单项选择题 1. 数据结构是指()。 A.数据元素的组织形式 B.数据类型 C.数据存储结构 D.数据定义 2. 数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。 A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构 3. 树形结构是数据元素之间存在一种()。 A.一对一关系 B.多对多关系 C.多对一关系 D.一对多关系 4. 设语句x++的时间是单位时间,则以下语句的时间复杂度为()。 for(i=1; i<=n; i++) for(j=i; j<=n; j++) x++; A.O(1) B.O(2n) C.O(n) D.O(3n) 5. 算法分析的目的是(1),算法分析的两个主要方面是(2)。 (1)A.找出数据结构的合理性 B.研究算法中的输入和输出关系

C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 (2)A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 6. 计算机算法指的是(1),它具备输入,输出和(2)等五个特性。 (1)A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 (2)A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性,稳定性和安全性 7. 数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。 A.低 B.高 C.相同 D.不好说 8. 数据结构作为一门独立的课程出现是在()年。 A.1946 B.1953 C.1964 D.1968 9. 数据结构只是研究数据的逻辑结构和物理结构,这种观点()。 A.正确 B.错误 C.前半句对,后半句错 D.前半句错,后半句对 10. 计算机内部数据处理的基本单位是()。 A.数据 B.数据元素 C.数据项 D.数据库

相关文档
最新文档