《数据结构第二版 主编殷人昆课后答案》由会员分享,可在线阅读,更多相关《数据结构第二版 主编殷人昆课后答案(33页珍藏版)》请在金锄头文库上搜索。
1、1数据结构 第一单元课后参考答案2一、单选题1. 一个数组元素ai与A *(a+i)的表示等价.A *(a+i)B a+ iC *a + iD i = 0) r1 = ( float ) (q.b + sqrt (x ) ) / ( 2 * q.a ) ; r2 = ( float ) (q.b sqrt ( x ) ) / (2 * q.a ) ; return 1 ; else return 0 ; 135) 按照ax*2+bx+c的格式(x2用x*2表示)输出二次多 项式,在输出时要注意去掉系数为0的项,并且当b和c的 值为负时,其前不能出现加号. void Print ( Quadra
2、tic q ) if ( q.a ) cout 0 ) cout 0 ) cout x ) return 1 ;else return 0 ; 判断n是否是一个素数, 若是则返回1, 否则返回0, 时间 复杂度为152) int sum1 ( int n ) int p = 1, s = 0 ;for ( int i = 1; i = n的最小i值, 时间复杂 度为O(sqrt (n)185) void UseFile (ifstream i x ) i = x % 10 ;c i + ; 利用数组C中的每个元素对应统计inp所联系的整 数文件中个位数值同为i的整数个数 时间复杂度O(n)19
3、6) void mtable ( int n) for ( int i = 1; i L.Size ) cerr L .Size + 1 ) cerr = i ; j-)L.list j+1 = L . list j ;L.list i-1 = x ;L.Size + ;28(4) 从线性表中删除具有给定值x的所有元素. void delete2 (List while ( i L . Size ) if (L . list i = = x ) for ( int j = i + 1 ; j L .Size ; j+) L . list j-1 = L . list j ; L.Size -
4、; else i+ ; 294. 对于结点类型为LNode的单链表,编写出下列每个算法; (1) 将一个单链表按逆序链接,即若原单链表中存储元素 的次序为a1, a2, .an ,则逆序链接后变为an, an-1 ,.a 1. void Contrary (LNode * HL = NULL ; while (p != NULL) LNode *q = p ; p = pnext ; qnext = HL ; HL = q ; 30(2)删除单链表中的第i个结点. void Delete1( LNode * exit(1) ; LNode *p, *q ; p = NULL ; q = HL
5、; while ( q != NULL) if ( j = = i) break ; else p = q ; q = qnext ; j+ ; 31if (q = = NULL) cerr“Index is outof range!“endl ; exit (1) ; if ( p = NULL ) HL = HLnext ; else pnext = qnext ; delete q ; 32(3) 从单链表中查找出所有元素的最大值,该值由函数返 回,若单链表为空,则显示出错信息并停止运行. ElemType MaxValue ( LNode *HL) if ( HL = NULL) ce
6、rr “Linked list is empty!“ endl ; exit ( 1 ) ; ElemType max = HLdata ; LNode *p = HLnext ; while ( p != NULL) if ( max pdata) max = pdata ; p = pnext ; return max ; 33(4)统计出单链表中结点的值等于给定值x的结点数. int Count(LNode *HL, ElemType x ) int j = 0 ; while ( HL != NULL ) if ( HLdata = x ) j+ ; HL = HLnext ; return j ;