实用数据结构基础(第三版)课后答案(7)

2019-08-03 14:36

char ch;

{ int i,j;

for(i=0;ilen;i++) if(r->vec[i]==ch) {

for(j=i;jlen;j++) r->vec[i]=r->vec[i+1]; r->len=r->len-1; }

return (r );

}

④//算法思想:从第index个元素开始扫描r1,当其元素值与r2的第一个元素的值相同时,判定它们之后的元素值是否依次相同,直到r2结束为止,若都相同则返回,否则继续上述过程直到r1扫描完为止。 int partposition(r2,r1,index) str *r2, *r1;

int index;

{ int i,j,k;

for(i=index;r1->vec[i];i++)

for(j=i,k=0;r1->vec[j]==r2->vec[k];j++,k++) if(!r2->vec[k+1]) return(i); return(-1);

}

⑤算法思想:从位置1开始调用第(4)小题的函数partposition(),若找到了一个

相同子串,则调用delsubstring(),再相同的方法查找后面位置的相同子串。 str *delstringall(r,r3) str *r, *r3;

{ int i=0;

while(ilen)

{ if(partposition(r,r3,i)!=-1)

delsubstring(r,i,r3->len) i++; }

}

⑥两个串相等的条件是两个串的长度相等,且两个串的对应的字符必须都相同。

int same(x,y) str *x,*y;

{ int i=0,tag=1; if(x->len!=y->len)

return(0);

else

{ while(ilen && tag)

{ if(x->vec[i]!=y->vec[i])

31

tag=0;

i++; }

return(tag); }

}

(2) 设计一算法判断字符串是否为回文(即正读和倒读相同) 解:#include \

typedef struct

{ char *head; int length; }Hstring;

void isPalindrome(Hstring s) {

int i=0;

int j=s.length-1;

while(j-i>=1) {

if (s.head[i]==s.head[j]) {i++; j--; continue;} else

break; }

if(j-i>=1)

printf(\ else

printf(\

}

(3) 设计一算法从字符串中删除所有与字串\del\相同的子串 解:#include \

#include \typedef struct { char *head;

int length;

}Hstring;

char *DeleteSubString(Hstring S,Hstring T) {

int i=0; int j,k;

int Slength=S.length; int Tlength=T.length; char *tail;

while(i<=Slenght-Tlength) {

32

j=0;k=i;

while (j

if(j==Tlength) // 若匹配则执行下面的程序 {

if (i==0) // 若位于头位置则改变头指针 {

S.head=S.head+Tlength; S.length-=Tlength; Slength-=Tlength; i=0; } else

if (i+Tlength

{

tail=S.head+i+Tlength; strcpy(S.head+i,tail); S.length-=Tlength; Slength-=Tlength;

}

else // 若位于尾部则割去 strncpy(S.head+i,”\\0”,1);

}

else // 若不匹配则i加1 i++; }

return S.head;

}

(4)设计一算法统计字符串中否定词\not\的个数 解:#include \

#include \

int Find_word(char *text, const char *word) { int textlength=strlen(text);

int wordlength=strlen(word);

int i,j,k; int count=0;

for(i=0;i

{ j=0;k=i;}

while(j

if(j==wordlength&&word[j]==’\\0’) // 匹配成功计数器加1 count++; }

return count;

33

单元练习6

一.判断题(下列各题,正确的请在前面的括号内打√;错误的打╳ )

(√)(1)n维的多维数组可以视为n-1维数组元素组成的线性结构。 (√)(2)稀疏矩阵中非零元素的个数远小于矩阵元素的总数。

(ㄨ)(3)上三角矩阵主对角线以上(不包括主对角线中的元素),均为常数C。 (√)(4)数组元素可以由若干个数据项组成。

(√)(5)数组的三元组表存储是对稀疏矩阵的压缩存储。 (ㄨ)(6)任何矩阵都可以进行压缩存储。

(ㄨ)(7)广义表是线性表的推广,所以广义表也是线性表。 (ㄨ)(8)广义表LS=(a0,a1,??an-1),则an-1是其表尾。 (√)(9)广义表((a,b),a,b)的表头和表尾是相等的。 (√)(10)一个广义表的表尾总是一个广义表。

二.填空题

(21)多维数组的顺序存储方式有按行优先顺序存储和 按列优先顺序存储 两

种。

(22)在多维数组中,数据元素的存放地址可以直接通过地址计算公式算出,所

以多维数组是一种 随机 存取结构。

(23) 在n维数组中的每一个元素最多可以有 n 个直接前驱。

(24)输出二维数组A[n][m]中所有元素值的时间复杂度为 O(n*m) 。 (25)数组元素a[0..2][0..3]的实际地址上2000,元素长度是4,则LOC[1,2]= 2024 。 LOC[1,2]=2000+(1*4+2)*4 (6)稀疏矩阵的三元组有 3 列。

(7)稀疏矩阵的三元组中第1列存储的是数组中非零元素所在的 行数 。 (8)n阶对称矩阵,如果只存储下三角元素,只需要 n(n-1)/2 个存储单元。 (9)稀疏矩阵A如下图所示,其非零元素存于三元组表中,三元组(4,1,5)按列优先顺序存储在三元组表的第 4 项。 (10)稀疏疏矩阵的压缩存储方法通常有三元组表和 十字链表 两种。 广义表(或子表) 。

(12)tail(head((a,b),(c,d))= b 。 (13) 设广义表((a,b,c)),则将c分离出来的运算是 head(tail(tail(head(L)))) 。

(14) 广义表((a,b),c,d),表尾是 (c,d) 。

(15) n阶下三角矩阵,因为对角线的上方是同一个常数,需要 n(n-1)/2+1 个存储单元。

(16)稀疏矩阵中有n个非零元素,则三元组有 n 行。 (17) 广义表LS=(a,(b),((c,(d))))的长度是 3 。

34

A= (11)任何一个非空广义表的表尾必定是

8 0 0 0 0 0 0 11 0 0 0 0 0 0 0 6 0 0 0 3 0 0 7 0 0 5 0 0 0 0 0 0 0 0 9 0 稀疏矩阵A

(18) 广义表LS=(a,(b),((c,(d))))的深度是 4 。 (19) 广义表L=((),L),则L的深度是 ∞ 。

(20) 广义表LS=(a,(b),((c,(d))))的表尾是 ((b),((c,(d)))) 。

三.选择题

(1)在一个m维数组中,( D )恰好有m个直接前驱和m个直接界后继。

A.开始结点 B.总终端结点 C.边界结点 D.内部结点

(2)对下述矩阵进行压缩存储后,失去随机存取功能是( D )。 A.对称矩阵 B.三角矩阵 C.三对角矩阵

D.稀疏矩阵

(3)在按行优先顺序存储的三元组表中,下述陈述错误的是( D )。

A. 同一行的非零元,是按列号递增次序存储的 B. 同一列的非零元,是按行号递增次序存储的 C. 三元组表中三元组行号递增的 D. 三元组表中三元组列号递增的 (4)对稀疏矩阵进行压缩存储是为了( B )。 A.降低运算时间 C.便于矩阵运算

B.节约存储空间 D.便于输入和输出

(5)若数组A[0..m][0..n]按列优先顺序存储,则aij的地址为( A )。 A.LOC(a00)+[j*m+i]

B.LOC(a00)+[j*n+i] D.LOC(a00)+[(j-1)*m+i-1]

C.LOC(a00)+[(j-1)*n+i-1] (6)下列矩阵是一个( B )

A.对称矩阵 B.三角矩阵 C.稀疏矩阵 D.带状矩阵 (7)在稀疏矩阵的三元组表示法中,每个三元组表示( D )。

A. 矩阵中非零元素的值

B. 矩阵中数据元素的行号和列号 C. 矩阵中数据元素的行号、列号和值 D. 矩阵中非零数据元素的行号、列号和值

(8)已知二维数组A[6][10],每个数组元素占4个存储单元,若按行优先顺序存放数组元素a[3][5]的存储地址是1000,则a[0][0]的存储地址是( B )。

A.872

B.860

C.868

D.864

35


实用数据结构基础(第三版)课后答案(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Thoughtworks面试题目

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: