数据结构的C语言的经典练习题,有详细的答案和注释讲解

1.6在程序设计中,常用下列三种不同的出错处理方式:

(1)用exi语句终止执行并报告错误

(2)以函数的返回值区别正确返回或错误返回;

(3)设置一个整型变量的函数参数以区别正确返回或某种错误返回

试讨论这三种方法各自的优缺点。

解:(1)exit常用于异常错误处理,它可以强行中淅程序的执行,返囯操作系统。

(2)以函数的返回值判断正确与杏常用于子程序的测试,便于实现程序的局邹控制。

(3)用整型函数进行错误处理的优点是冂以给出错误型,使于迅速确定错误

1.7在程序设计中,可采用下列三种方法实现输出和输入:

(1)通过 scanf和 printf语句;

(2)通过函数的参数显式传递;

(3)通过全局变量隐式传递。

试讨论这三种方法的优缺点。

解:(1)用 scanf和 printf直接进行输入输岀的好处是羏象、直观,但缺点是需要对其进行格式控制,

较为烦琐,如果出现错误,则会引起整个系统的崩溃。

(2)通过函数的参数传递进行输入输出,便于实信息的隐蔽,减少出错的可能。

(3)通过全局变量的隐式传递进行输入输出最为方便,只需修改变量的值即可,但过多的全局变量使程

序的维护较为困难

1.8设n为正整数。试确定下列各程序段中前置以记号@的语句的频度:

while(i=n-1)(

@k+=10*i;

(2)i=1;k=0

k+10*i

y while(i<=n-1)

(3)i=1;k=0;

e(i<=n-1){

i++;

@k+=10*i

(4)k=0;

for(i-1: i

for (j=i: j<=n: j++)

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

for (j-1: j<=i: j++)i

for(k=1: k<=j: k++)

while(i+j<=n)i

g if(i>j)j++;

e⊥se

(7)x=n;y=0;∥/n是不小于1的常数

while(x>=(y+1)*(y+1)1

(8)x=91;y=100;

while(y>0)[

@if(x》100){x=10;y-;}

解:(1)

(2)n

(3)n-1

n(n+

(4)n+(n-1)+(n-2)+..+1

i(i+1)

(5)1+(1+2)+(1+2+3)+.+(1+2+3+,,,+n)

L+

1(n+1)(2n+1)+-n(+1)=n(n+1)(2n+3)

12

」向下取整

(8)1100

1.9假设n为2的乘幂,并且n>2,试求下列算法的时间复杂度及变量 count的值(以n的函数形式表示)

int Time(int n)t

t=0

while(x

2: count++

retur

unt

解:O(log2n)

2

count=log n-2

11已知有实现同一功能的两个算法,其时问复杂度分别为O2)和O(),假设现实计算机可连续

运算的时间为10′秒(100多天),又每秒可执行基本操作(根据这些操作来估算算法时间复杂度)10次。

试问在此条件下,这两个算法可解问题的规模(即n值的范围)各为多少?哪个算法更适宜?请说明理由

解:2=1012

40

n=10

n=16

则对于同样的循抔次教n,在这个规模卜,第二种算法所花費的代价婓大得多。故在这个趔模卜,第

一种算法更适宜

1.12设有以下三个函数:

f(n)=2ln4+n2+100,g{n)=15n4+500n3,h(n)=50)m35+ nlogn

请判断以下断言正确与否:

(1)f(n)是0(g(n)

(2)h(n)是0(f(n))

(3)g(n)是0(h(n)

(4)hn)是0(n35

(5)h(n)是0( nlogn)

解:(1)对(2)错(3)错(4)对(5)错

1.13试设定若干n值,比较两函数n2和50nlog2n的增长趋势,并确定n在什么范围内,函数n2的值

大于50nlog2n的值。

解:n2的增长趋势快,但在n较小的时候,50nlog2n的值较大

当n>438时,n2>50nlog2n

1,1判断下列各对函数f(n)和g(n),当n→∞时,哪个函数增长更快?

)f()=10m2+m(n+10).g)=2n+n+7

(2)f(an)=(un(n!)+5)2,g(n)=13n25

)rf(n)=n2+Vn4+1,g(n)=(n(n)2+n

(f(n)=2)+(2),g)=n)+

解:(1)g(n快(2)g(n)快(3)f(m)快(4)f(m)快

1.15试用数学归纳法证明

()∑2=m(n+1)n+1)6(n>0)

2∑x=(x1-1/(x-1)(

x≠1,n≥0

r=0

()∑2=2”-

(n≥1

∑(2i-1)

1.16试写一算法,自大至小依次输出顺序读入的三个整数X,Y和Z的值

int max 3(int x, int y,

if(x)z) return x

else return z

f(y>z)return y

else return Z

1.17已知k阶斐波那契序列的定义为

f60=0,f1=0,…,f2=0,f

f=fu-+fu2+

kk+1,

试编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现

解:k>0为阶数,n为数列的第n项

int Fibonacci ( int k, int n

if(k<1) exit ( OVERFLOW)

if(!p) exit(OVERFLOW)

1nt

for(i=0;i

if(i

else pli]=

(i=k+1;i

p[0

for(j=0:j

p[k]=2*p[k1]x;

irn pki

1.18假设有A,B,C,D,E五个高等院校进行田径对抗赛,各院校的单项成绩均已存入计算机,并构成一

张表,表中每一行的形式为

项目名称性别

校名

成绩

得分

编写算法,处理上述表格,以统计各院校的男、女总分和团体总分,并输出。

typedef enuma, B, C, D, E) SchoolName:

typedef enum [ Female, Molc) ScxTypc

typedef struct

chur event「31;//目

SexType sex

SchoolNane school

Int sco

t

typedef struct

int Malesun

//男团总分

int femalesum;//女团总分

int Totalsun://团体总分

Sum SumScore(SchoolName sn, Component a[, int n)

Sum tem

Males

temp. Femalesum-0;

temp. TotalSum=0

Int

f(ali] school==sn)i

if (ali]. sex==Male) temp. MaleSum+=ali. score

I[i]. sex==Female) temp FemaleSumt=alil. score

temp.TotalSumtemp MaleSumttemp. FemaleSum

return temp:

1.9试编写算法,计算i*的值并存入数组a[0. arrsize1]的第i-1个分量中(i=1,2,…,n)。假设计

算机中允许的整数最大值为 maxint,则当 narrsiz或对某个k(1≤k≤n),使k2k> max int时,

应按出错处理。注意选择你认为较好的出错处理方法

解:

#inc lude

#define MAXINT 65535

tdefine ArrSize 10

i ( int i)

t main

nt i, k

int aLArrs1zel

cou

Enter k

cin>>k

if(k>ArrSize-D) exit(o)

for(i-0: i

if(i=0)a[i]=1;

else i

if(2*i=*a[i-1]>MAXINT) exit(O)

else a[i]=2**ali-1

for (i=0:i<=k: i++)

if(ali]>MAXINT) exit(o)

else cout

return o

120试编写算法求一元多项式的值P(x)=∑ax的值Pn(x),并确定算法中每一语句的执行次数

和整个算法的时间复杂度注意选择你认为较好的输入和输出方法,本题的输入为a:(=0,1,…,n),x

和n,输出为P(xn)

#includeiostream. h>

tincludexstdlib, h>

Defined 1o

double pol ynomail(int all, int i, double x, int n

nt main o

double

int n, i

int aInI

cout("输入变量的值x:"

cout《"输入多项式的阶次n:";

if(n N-1) exit (0

cout<

for(i=0; i

cout<

return

double polynomail(int a[l, int i, double x, int n

if(i>0) return a[n-i]+polynomail(a, i-1,x,n)*x

本算法的时间复杂度为on)。

第2章线性表

2.1描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点〕

解:头指针是指向链表中第一个结点的指针。首元结点是指链表中存储第一个数据元素的结点。头结

点是在首元结点之前附设的一个结点,该结点不存储数据元素,其指针域指向首元结点,其作用主要是为

了方使对链表的操作。它可以对空表、非空表以及首元结点的操作进行统一处理。

2.2填空题。

解:(1)在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元索个数与元素

在表中的位置有关。

(2)顺序表中逻辑上相邻的元素的物理位置必定紧邻。单链表中逻辑上相邻的元素的物理位置不一定

紧邻。

(3)在单链表中,除了首元结点外,任一结点的存储位置由某前练点的链域的值指示。

(4)在单链表中设置头结点的作用是入和酈除苣元结点不逝行殊处理。

2.3在什么情况下用顺序表比链表好?

解:当线性表的数据元紊在物理位臀上是连续存偕的时候,用顺序表比用表好,其特点是可以进行

随机存取。

2.4对以下单链表分别执行下列各程序段,并画出结果示意图。

1-26_738

解:

(1)L-2573

P

R

2)一?381

R

(3)L

t2L5758

R

(4)L

25778}→

()L-25{735

R

(6)1-210{14_6416

R

(7)L

10

14

+6161→

2.5画出执行下列各行语句后各指针及链表的示意图

L=(LinkListmalloc(sizeof(LNode)): P=L:

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

P->next=(LinkList)malloc(sizeof(lnode)

P=->next

P->data=i=k2

P->next-NULL

for (i=4; i>=1; i-) Ins LinkList(L, i+1, i=2)

for(i=l: 1<=3; 1++) Del LinkList( l, i)

解:

L:3_57

P

L一123458-78k

L[424678区

26已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中

选择合适的语句序列。

a.在P结点后插入S结点的语句序列是

数据结构编程题及解析c语言版,数据结构习题集答案(C语言版).pdf_c语言数据结构题目,c语言数据结构答案-C/C++文档类资源...相关推荐

  1. c语言将AOE网络的数据写入TXT文档中,数据结构与算法学习辅导及习题详解.张乃孝版-C/C++文档类资源...

    数据结构与算法学习辅导及习题详解.张乃孝版.04年10月 经过几年的努力,我深深体会到,编写这种辅导书要比编写一本湝通教材困难得多. 但愿我的上述理想,在本书中能够得以体现. 本书的组织 本书继承了& ...

  2. python在abaqus中的应用光盘文件下载_python语言在abaqus中的应用随书光盘.rar-讲义文档类资源...

    关闭 致敬爱的网友及本站会员的一封信 敬爱的小伙伴们大家好! 作为码农集市(coder100)平台的站长,我不得已采取这样的方式来和各位来到我们平台逛逛的小伙们做一次推心置腹的畅谈.真诚的希望您能够抽 ...

  3. wincc 用c语言读取用户名,WINCC中使用C脚本获得操作记录_wincc脚本读取报警记录-C文档类资源...

    WINCC中使用C脚本获得操作记录 文档号 版本|日期 页数 SIEMENS 应用范围 详述 在生产中,有很多时候需要记录操作员的操作,以便进行事故分析. 本身提供了一些对象可以产 生操作记录,但是在 ...

  4. 第十届蓝桥杯c语言试题,第十届蓝桥杯真题编程题1-7解析(高级组).pdf

    scratch 少儿编程第十届蓝桥杯真题 7 大家好 ~今天我们来讲解 scratch 蓝桥杯第十届编程大题的第七道题. 同样,这道题也是非常有难度的一道题.一起来看一下吧 解析: 女孩的程序 1.在 ...

  5. 网易2016研发工程师编程题--完全解析

    前言 之前做公司的真题,碰到动态规划,还有一些数学性质的题目比较多一点.网易2016研发工程师编程题跟之前做的题目有很大的不同,不仅涉及到二叉树的编码,还涉及到图的广度遍历,最后还有一个快排.可以说这 ...

  6. c语言编程题报文解析,C语言解析pcap文件得到HTTP信息实例

    程序功能为解析由Wireshark生成的pcap文件. 实现步骤: 1)用Wireshark软件抓包得到test.pcap文件 2)程序:分析pcap文件头 -> 分析pcap_pkt头 -&g ...

  7. python数据结构编程题_生信编程实战第5题(python)

    image.png 先从hg38的gtf中提取"ANXA1"基因grep '"ANXA1"' hg38.gtf >ANXA1.gtf 在题目之前先分析要处 ...

  8. 【王道数据结构编程题】- 二叉树算法题

    目录 1.已知一颗二叉树按顺序存储结构进行存储,设计一个算法,求编号分别为i和j的两个节点的最近的公共祖先节点的值. 2.编写后序遍历的二叉树的非递归算法 3.试给出二叉树的自下而上,从右到左的层次遍 ...

  9. 原创力文档c语言程序设计第五章,C语言程序设计教程第五章练习题题目(7页)-原创力文档...

    单选题 1.关于数组的定义与初始化,下列哪一项是错误的() A.int arr[5] = {1,2,3,4,5}; B.int arr[] = {1,2,3,4,5}; C.int arr[5] = ...

  10. 单片机c语言数码管显示5,51单片机数码管显示实验报告(5页)-原创力文档

    51单片机数码管显示实验 实验内容: 编写程序让8只数码管初始显示0,每隔大约1s加1显示(可以用延时函数实现),到数码管显示9后,再从0开始显示,如此循环反复. C语言程序 #include #de ...

最新文章

  1. JSTL 读取数组 和 字符串连接
  2. 利用WxJava实现PC网站集成微信登录功能,核心代码竟然不超过10行
  3. [Vue warn]: Failed to mount component: template or render function not defined. 错误解决方法
  4. 报错引发的版本对应——tensorflow+keras+python版本对应(全)
  5. 如何确定电脑主板坏了_【不良资产 】(第1422期)银行在打包不良资产出售之前,会如何处置不良资产?...
  6. 一种简单的不需要查询UI5文档就能获得所有API的小技巧
  7. uni-app文档需要注意细节点
  8. 滑雪(洛谷-P1434)
  9. 拓端tecdat:R语言梯度提升机 GBM、支持向量机SVM、正则判别分析RDA模型训练、参数调优化和性能比较可视化分析声纳数据
  10. FFMPEG安装及入门
  11. OPPO a1刷机包下载_OPPOA1密码忘记了?来这里搞定
  12. linux下查看book文件夹,Linux初级入门百篇-find命令
  13. Browserslist: caniuse-lite is outdated
  14. 录制App操作生成Gif动态图教程(Android)
  15. scuctf赛后自闭
  16. Thymeleaf th:each遍历,th:if、th:switch 条件判断,input,select,radio 回显赋值
  17. wps分享为什么要登入_靠谱租分享:为什么要在年前租办公室
  18. 风险中性的深度学习选股策略
  19. Linux中的进程管理
  20. 【解决安装的marked包运行显示marked is not a function的问题】

热门文章

  1. ORBSLAM关键帧的筛选和插入
  2. 机器学习精讲中7.1固定特征核中关于N维向量多项式特征映射的理解(二)
  3. java之split用法注意
  4. 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,
  5. Spring Cloud之Swagger集群搭建
  6. media type
  7. Oracle数据库性能优化的艺术pdf
  8. hdu 3642 Get The Treasury(扫描线)
  9. python实现决策树ID3算法
  10. MYSQL无法连接,提示10055错误尝试解决