数据结构_c语言描述(第二版)答案_耿国华_西安电子科技大学
scanf( “ %f ” ,&a[i]); /* 执行次数: n 次 */ p=a[0]; for(i=1;i<=n;i++)
{ p=p+a[i]*x; x=x*x;}
/*执行次数: n 次 */
printf( “ %f” ,p); } 算法的时间复杂度: T(n)=O(n)
通过参数表中的参数显式传递 float PolyValue(float a[ ], float x, int n)
号。
例如 m 的初值为 20;n=7 ,7 个人的密码依次是: 3,1,7,2,4,8,4, 出列顺序为 6,1,4,7,2,3,5 。
【解答】算法如下:
typedef struct Node {
int password; int num; struct Node *next; } Node,*Linklist;
是属于该模式的字符序列,而 ’1+3&3-1’则不是。
【解答】算法如下:
int IsHuiWen() {
Stack *S;
Char ch,temp; InitStack(&S);
Printf( \n“请输入字符序列: ” );
Ch=getchar();
While( ch!=&)void Jose Nhomakorabeahus()
{
Linklist L;
Node *p,*r,*q;
int m,n,C,j;
L=(Node*)malloc(sizeof(Node));
/*初始化单向循环链表 */
if(L==NULL) { printf("\n 链表申请不到空间 !");return;}
L->next=NULL;
【解答】算法如下:
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 来指向新连接的表的表尾,初始值指向表
优点:减少实参与形参的个数,从而减少内存空间以及传递数据时的时间消耗 缺点:函数通用性降低,移植性差
算法如下:通过全局变量隐式传递参数 PolyValue()
{ int i,n;
float x,a[],p; printf( n“n=” ); scanf( “ %f” ,&n); printf( n“x=” ); scanf( “ %f” ,&x); for(i=0;i<n;i++)
p->password=C;
p->num=j;
r->next=p;
r=p;
}
}
r->next=L->next;
4
printf(" 请输入第一个报数上限值 m(m>0):");
scanf("%d",&m); printf("*****************************************\n");
{ float p,s; int i; p=x;
1
s=a[0]; for(i=1;i<=n;i++)
{s=s+a[i]*p; p=p*x;}
return(p); } 算法的时间复杂度: T(n)=O(n)
/*执行次数 :n 次 */
第 2 章 线性表
习题
1. 填空:
(1) 在顺序表中插入或删除一个元素,需要平均移动
一定 _____相邻。在单链表中,逻
(4) 在带头结点的非空单链表中,头结点的存储位置由
头指针 指示,首元素结点的存储位置
由头结点 指示,除首元素结点外,其它任一元素结点的存储位置由
其直接前趋的 next 域 指
示。
2. 选择题
(1) A (2) 已知 L 是无表头结点的单链表, 且 P 结点既不是首元素结点, 求从下列语句中选择合适的语句序列。 a. 在 P 结点后插入 S 结点的语句序列是: E、 A。 b. 在 P 结点前插入 S 结点的语句序列是: H、 L、I 、E 、 A。 c. 在表首插入 S 结点的语句序列是: F、 M 。 d. 在表尾插入 S 结点的语句序列是: L 、 J、 A、 G。 供选择的语句有:
{
int j;
ElemType tmp;
for(j=0;j<=(*num-1)/2;j++)
{ tmp=L[j];
L[j]=L[*num-j-1];
L[*num-j-1]=tmp;}
}
( 2)用单链表作为存储结构
void invert(LinkList L)
{
Node *p, *q, *r;
if(L->next ==NULL) return;
一半 元素,具体移动的元素个数与 插入
或删除的位置 有关。
(2) 线性表有 顺序和链式 两种存储结构。在顺序表中,线性表的长度在数组定义时就已经确
定,是 静态 保存,在链式表中,整个链表由“头指针”来表示,单链表的长度是
动态 保存。
(3) 在顺序表中,逻辑上相邻的元素,其物理位置_ 辑上相邻的元素,其物理位置 不一定 相邻。
第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
个密码(正整数)。一开始任选一个报数上限值
m, 从第一个人开始顺时针自 1 开始顺序报
数,报到 m 时停止报数。 报 m 的人出列, 将他的密码作为新的 m 值,从他在顺时针方向上
的下一个人开始重新从 1 报数,如此下去,直至所有的人全部出列为止。试设计一个程序,
求出出列顺序。 利用单向循环链表作为存储结构模拟此过程, 按照出列顺序打印出各人的编
(1 )通过参数表中的参数显式传递
(2 )通过全局变量隐式传递。讨论两种方法的优缺点,并在算法中以你认为较好的一种实
现输入输出。
【解答】 (1 )通过参数表中的参数显式传递
优点:当没有调用函数时,不占用内存,调用结束后形参被释放,实参维持,函数通 用性强,移置性强。
缺点:形参须与实参对应,且返回值数量有限。 ( 2)通过全局变量隐式传递
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 均未显式存储。
判断栈 S 空:如果 S->top==-1 表示栈空。 判断栈 S 满:如果 S->top==Stack_Size-1 表示栈满。 (2) 链栈( top 为栈顶指针,指向当前栈顶元素前面的头结点) 判断栈空:如果 top->next==NULL 表示栈空。 判断栈满:当系统没有可用空间时,申请不到空间存放要进栈的元素,此时栈满。
也不是尾元素结点。 按要
2
M L= P; (3) D (4) D (5) D (6) A
7 试分别以不同的存储结构实现单线表的就地逆置算法,即在原表的存储空间将线性表
(a 1 ,a2 , … ,an )逆置为 (a n ,a n-1 , … ,a1 )。
【解答】( 1 )用一维数组作为存储结构
void invert(SeqList *L, int *num)
printf(" 出列的顺序为 :\n");
q=L;
p=L->next;
while(n!=1)
/*计算出列的顺序 */
{ j=1;
while(j<m) {
/*计算当前出列的人选 p*/
q=p;
/*q 为当前结点 p 的前驱结点 */
p=p->next; j++;
}
printf("%d->",p->num);
4 照四则运算加、减、乘、除和幂运算的优先惯例,画出对下列表达式求值时操作数栈和 运算符栈的变化过程: A-B*C/D+E ↑ F
5
【解答】
5 写一个算法,判断依次读入的一个以 @ 为结束符的字母序列,是否形如‘序列 1& 序列 2 ’
的字符序列。 序列 1 和序列 2 中都不含 ‘ & ’,且序列 2 是序列 1 的逆序列。 例如, ’a+b&b+a’
因为有 S(1)S(2)S(3)S(4)X(4)X(3)S(5)X(5)S(6)S(6) 则,出栈的顺序必须为 X(2)X(1) 。
,此时按照“后进先出”的原
能得到 135426 的出站序列。
因为有 S(1)X(1)S(2)S(3)X(3)S(4)S(5)X(5)X(4)X(2)X(1)
。
3 给出栈的两种存储结构形式名称,在这两种栈的存储结构中如何判别栈空与栈满? 【解答】(1 )顺序栈 ( top 用来存放栈顶元素的下标)
数据结构c语言版耿国华课后习题答案
数据结构c语言版耿国华课后习题答案数据结构是计算机科学中的一个重要领域,它涉及到数据的组织、管理和存储方式,以便可以高效地访问和修改数据。
C语言作为一种高级编程语言,提供了丰富的数据结构实现方法。
耿国华教授编写的《数据结构C语言版》一书,为学习者提供了深入理解和实践数据结构的机会。
以下是该书课后习题的一些参考答案。
# 第一章绪论1. 习题1:数据结构的定义是什么?- 参考答案:数据结构是计算机科学中用于组织、管理和存储数据的方式,以便可以高效地访问和修改数据。
2. 习题2:为什么需要学习数据结构?- 参考答案:学习数据结构有助于提高编程效率,优化算法性能,以及更好地解决实际问题。
# 第二章线性表1. 习题1:线性表的特点是什么?- 参考答案:线性表的特点是数据元素之间存在一对一的线性关系,可以顺序存储或链式存储。
2. 习题3:如何实现线性表的插入操作?- 参考答案:线性表的插入操作通常涉及找到插入位置,然后将新元素插入到该位置,并调整后续元素。
# 第三章栈和队列1. 习题1:栈的后进先出(LIFO)特性是什么?- 参考答案:栈的后进先出特性意味着最后插入的元素将是第一个被删除的元素。
2. 习题2:如何用C语言实现一个队列?- 参考答案:可以用数组或链表来实现队列。
队列的基本操作包括入队(enqueue)和出队(dequeue)。
# 第四章树和二叉树1. 习题1:二叉树的定义是什么?- 参考答案:二叉树是每个节点最多有两个子节点的树结构,通常分为左子节点和右子节点。
2. 习题3:二叉树的遍历方法有哪些?- 参考答案:二叉树的遍历方法包括前序遍历、中序遍历、后序遍历和层序遍历。
# 第五章图1. 习题1:图的基本概念有哪些?- 参考答案:图由顶点(节点)和边组成,可以表示对象之间的关系。
2. 习题2:图的存储方式有哪些?- 参考答案:图的存储方式主要有邻接矩阵和邻接表两种。
# 结语通过学习《数据结构C语言版》一书,读者可以掌握各种数据结构的基本概念、特性以及实现方法。
数据结构——C语言描述习题及答案耿国华
第1章绪论习题一、问答题1. 什么是数据结构?2. 四类基本数据结构的名称与含义。
3. 算法的定义与特性。
4. 算法的时间复杂度。
5. 数据类型的概念。
6. 线性结构与非线性结构的差别。
7. 面向对象程序设计语言的特点。
8. 在面向对象程序设计中,类的作用是什么?9. 参数传递的主要方式及特点。
10. 抽象数据类型的概念。
二、判断题1. 线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。
2. 算法就是程序。
3. 在高级语言(如C、或PASCAL)中,指针类型是原子类型。
三、计算下列程序段中X=X+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)x=x+1;[提示]:i=1时:1 = (1+1)×1/2 = (1+12)/2i=2时:1+2 = (1+2)×2/2 = (2+22)/2i=3时:1+2+3 = (1+3)×3/2 = (3+32)/2…i=n时:1+2+3+……+n = (1+n)×n/2 = (n+n2)/2f(n) = [ (1+2+3+……+n) + (12 + 22 + 32 + …… + n2 ) ] / 2=[ (1+n)n/2 + n(n+1)(2n+1)/6 ] / 2=n(n+1)(n+2)/6=n3/6+n2/2+n/3区分语句频度和算法复杂度:O(f(n)) = O(n3)四、试编写算法求一元多项式Pn(x)=a0+a1x+a2x2+a3x3+…a n x n的值P n(x0),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能的小,规定算法中不能使用求幂函数。
注意:本题中的输入a i(i=0,1,…,n), x和n,输出为P n(x0).通常算法的输入和输出可采用下列两种方式之一:(1)通过参数表中的参数显式传递;(2)通过全局变量隐式传递。
数据结构_c语言描述(第二版)答案_耿国华_西安电子科技大学
号。
例如 m 的初值为 20;n=7 ,7 个人的密码依次是: 3,1,7,2,4,8,4, 出列顺序为 6,1,4,7,2,3,5 。
【解答】算法如下:
typedef struct Node {
int password; int num; struct Node *next; } Node,*Linklist;
是属于该模式的字符序列,而 ’1+3&3-1’则不是。
【解答】算法如下:
int IsHuiWen() {
Stack *S;
Char ch,temp; InitStack(&S);
Printf( \n“请输入字符序列: ” );
Ch=getchar();
While( ch!=&)
( 2) 如进站的车厢序列为 123456 ,能否得到 435612 和 135426 的出站序列,并说
【解答】
明原因(即写出以“ S”表示进栈、 “ X”表示出栈的栈序列操作) 。
( 1)可能得到的出站车厢序列是: 123 、132 、 213 、 231 、321 。
(2) 不能得到 435612 的出站序列。
判断栈 S 空:如果 S->top==-1 表示栈空。 判断栈 S 满:如果 S->top==Stack_Size-1 表示栈满。 (2) 链栈( top 为栈顶指针,指向当前栈顶元素前面的头结点) 判断栈空:如果 top->next==NULL 表示栈空。 判断栈满:当系统没有可用空间时,申请不到空间存放要进栈的元素,此时栈满。
{ float p,s; int i; p=x;
1
s=a[0]; for(i=1;i<=n;i++)
数据结构——C语言描述习题及答案 耿国华
第1章绪论习题一、问答题1.什么是数据结构?2.四类基本数据结构的名称与含义。
3.算法的定义与特性。
4.算法的时间复杂度。
5.数据类型的概念。
6.线性结构与非线性结构的差别。
7.面向对象程序设计语言的特点。
8.在面向对象程序设计中,类的作用是什么?9.参数传递的主要方式及特点。
10.抽象数据类型的概念。
二、判断题1.线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。
2.算法就是程序。
3.在高级语言(如C、或 PASCAL)中,指针类型是原子类型。
三、计算下列程序段中X=X+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)x=x+1;[提示]:i=1时: 1 = (1+1)×1/2 = (1+12)/2i=2时: 1+2= (1+2)×2/2 = (2+22)/2i=3时: 1+2+3= (1+3)×3/2 = (3+32)/2…i=n时:1+2+3+……+n= (1+n)×n/2 = (n+n2)/2f(n) = [ (1+2+3+……+n) + (12 + 22 + 32 + …… + n2 ) ] / 2=[ (1+n)n/2 + n(n+1)(2n+1)/6 ] / 2=n(n+1)(n+2)/6=n3/6+n2/2+n/3区分语句频度和算法复杂度:O(f(n)) = O(n3)四、试编写算法求一元多项式Pn(x)=a0+a1x+a2x2+a3x3+…a n x n的值P n(x0),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能的小,规定算法中不能使用求幂函数。
注意:本题中的输入a i(i=0,1,…,n), x和n,输出为P n(x0).通常算法的输入和输出可采用下列两种方式之一:(1)通过参数表中的参数显式传递;(2)通过全局变量隐式传递。
(完整版)数据结构_c语言描述(第二版)答案_耿国华_西安电子科技大学
第1章绪论2.(1)×(2)×(3)√3.(1)A(2)C(3)C5.计算下列程序中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)/66.编写算法,求一元多项式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<n;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)第2章线性表习题1.填空:(1)在顺序表中插入或删除一个元素,需要平均移动一半元素,具体移动的元素个数与插入或删除的位置有关。
《数据结构——C语言描述》习题及答案-耿国华-2
《数据结构——C语言描述》习题及答案-耿国华-2第1章绪论习题一、问答题1. 什么是数据结构?2. 四类基本数据结构的名称与含义。
3. 算法的定义与特性。
4. 算法的时间复杂度。
5. 数据类型的概念。
6. 线性结构与非线性结构的差别。
7. 面向对象程序设计语言的特点。
8. 在面向对象程序设计中,类的作用是什么?9. 参数传递的主要方式及特点。
10. 抽象数据类型的概念。
二、判断题1. 线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。
2. 算法就是程序。
3. 在高级语言(如C、或PASCAL)中,指针类型是原子类型。
三、计算下列程序段中X=X+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)x=x+1;[提示]:i=1时:1 = (1+1)×1/2 = (1+12)/2i=2时:1+2 = (1+2)×2/2 = (2+22)/2i=3时:1+2+3 = (1+3)×3/2 = (3+32)/2…i=n时:1+2+3+……+n = (1+n)×n/2 = (n+n2)/2f(n) = [ (1+2+3+……+n) + (12 + 22 + 32 + …… + n2 ) ] / 2 =[ (1+n)n/2 + n(n+1)(2n+1)/6 ] / 2=n(n+1)(n+2)/6=n3/6+n2/2+n/3区分语句频度和算法复杂度:O(f(n)) = O(n3)四、试编写算法求一元多项式Pn(x)=a0+a1x+a2x2+a3x3+…a n x n的值P n(x0),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能的小,规定算法中不能使用求幂函数。
注意:本题中的输入a i(i=0,1,…,n), x和n,输出为P n(x0).通常算法的输入和输出可采用下列两种方式之一:(1)通过参数表中的参数显式传递;(2)通过全局变量隐式传递。
《数据结构-C语言描述》习题及答案耿国华
第1章绪论习题一、问答题1. 什么是数据结构?2. 四类基本数据结构的名称与含义。
3. 算法的定义与特性。
4. 算法的时间复杂度。
5. 数据类型的概念。
6. 线性结构与非线性结构的差别。
7. 面向对象程序设计语言的特点。
8. 在面向对象程序设计中,类的作用是什么?9. 参数传递的主要方式及特点。
10. 抽象数据类型的概念。
二、判断题1. 线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。
2. 算法就是程序。
3. 在高级语言(如C、或PASCAL)中,指针类型是原子类型。
三、计算下列程序段中X=X+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)x=x+1;[提示]:1/2 = = (1+12)/2i=1时:1 = (1+1)×1/22/2 = = (2+22)/2i=2时:1+2= (1+2)×2/23/2 = = (3+32)/2i=3时:1+2+3= (1+3)×3/2…n/2 = = (n+n2)/2i=n时:1+2+3+……+n= (1+n)×n/2f(n) = [ (1+2+3+……+n) + (12 + 22 + 32 + …… + n2 ) ] / 2=[ (1+n)n/2 + n(n+1)(2n+1)/6 ] / 2请浏览后下载,资料供参考,期待您的好评与关注!=n(n+1)(n+2)/6=n3/6+n2/2+n/3区分语句频度和算法复杂度:O(f(n)) = O(n3)四、试编写算法求一元多项式Pn(x)=a0+a1x+a2x2+a3x3+…a n x n的值P n(x0),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能的小,规定算法中不能使用求幂函数。
注意:本题中的输入a i(i=0,1,…,n), x和n,输出为Pn(x)通常算法的输入和输出可采用下列两种方式之一:法的输入和输出可采用下列两种方式之一:(1)通过参数表中的参数显式传递;(2)通过全局变量隐式传递。
数据结构_c语言描述(第二版)答案_耿国华_西安电子科技大学(完整资料).doc
【最新整理,下载后即可编辑】第1章 绪 论2.(1)×(2)×(3)√3.(1)A (2)C (3)C5.计算下列程序中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)/66.编写算法,求 一元多项式p n (x)=a 0+a 1x+a 2x 2+…….+a n x n 的值p n (x 0),并确定算法中每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。
注意:本题中的输入为a i (i=0,1,…n)、x 和n,输出为P n (x 0)。
算法的输入和输出采用下列方法(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<n;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)第2章线性表习题1.填空:(1)在顺序表中插入或删除一个元素,需要平均移动一半元素,具体移动的元素个数与插入或删除的位置有关。
数据结构耿国华c语言版答案
数据结构耿国华c 语言版答案【篇一:《数据结构——c语言描述》习题及答案耿国华 2】题一、问答题1.什么是数据结构?2.四类基本数据结构的名称与含义。
3.算法的定义与特性。
4.算法的时间复杂度。
5.数据类型的概念。
6.线性结构与非线性结构的差别。
7.面向对象程序设计语言的特点。
8.在面向对象程序设计中,类的作用是什么?9.参数传递的主要方式及特点。
10.抽象数据类型的概念。
二、判断题1.线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。
2.算法就是程序。
3.在高级语言(如 c、或 pascal )中,指针类型是原子类型。
三、计算下列程序段中x=x+1 的语句频度for(i=1;i=n;i++)for(j=1;j=i;j++)for(k=1;k=j;k++)x=x+1;[提示 ]:⋯f(n) = [ (1+2+3+⋯⋯+n) + (12 + 22 + 32 +⋯⋯+ n2 ) ] / 2=[ (1+n)n/2 + n(n+1)(2n+1)/6 ] / 2=n(n+1)(n+2)/6=n3/6+n2/2+n/3区分语句频度和算法复杂度:o(f(n)) = o(n3)四、试编写算法求一元多项式pn(x)=a0+a1x+a2x2+a3x3+ ⋯anxn的值 pn(x0) ,并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能的小,规定算法中不能使用求幂函数。
注意:本题中的输入 ai(i=0,1, ⋯,n), x和 n,输出为 pn(x0). 通常算法的输入和输出可采用下列两种方式之一:(1)通过参数表中的参数显式传递;(2)通过全局变量隐式传递。
试讨论这两种方法的优缺点,并在本题算法中以你认为较好的一种方式实现输入和输出。
[提示 ]: float polyvalue(float{ ⋯⋯}核心语句:p=1; (x的零次幂)s=0;i 从 0 到 n 循环s=s+a[i]*p;p=p*x;或:p=x; (x的一次幂)s=a[0];i 从 1 到 n 循环s=s+a[i]*p;p=p*x;a[ ], float x, int n)实习题设计实现抽象数据类型“有理数”。
数据结构-c语言描述(第二版)答案耿国华编著
int
n)
1
s=a[0]; for(i=1;i<=n;i++) {s=s+a[i]*p; p=p*x;} return(p); } 算法的时间复杂度:T(n)=O(n)
/*执行次数:n 次*/
第 2 章 线性表
பைடு நூலகம்
习 题 1.填空:
(1)在顺序表中插入或删除一个元素,需要平均移动 一半元素,具体移动的元素个数与插入 或删除的位置有关。 (2)线性表有顺序和链式两种存储结构。在顺序表中,线性表的长度在数组定义时就已经确 定,是静态保存,在链式表中,整个链表由“头指针”来表示,单链表的长度是动态保存。 (3)在顺序表中,逻辑上相邻的元素,其物理位置_ 一定_____相邻。在单链表中,逻 辑上相邻的元素,其物理位置不一定相邻。 (4)在带头结点的非空单链表中,头结点的存储位置由 头指针指示,首元素结点的存储位置 由头结点指示,除首元素结点外,其它任一元素结点的存储位置由其直接前趋的 next 域指 示。
2.选择题
(1) A (2) 已知 L 是无表头结点的单链表,且 P 结点既不是首元素结点,也不是尾元素结点。按要 求从下列语句中选择合适的语句序列。 a. 在 P 结点后插入 S 结点的语句序列是:E 、A。 b. 在 P 结点前插入 S 结点的语句序列是:H、L、I 、E、A 。 c. 在表首插入 S 结点的语句序列是:F 、M。 d. 在表尾插入 S 结点的语句序列是:L、J 、A、G。 供选择的语句有: 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;
