1-4章习题答案 下载本文

3、7×(5+77)/2+6×9

九、有如下稀疏矩阵 1 2 3 4 5

1

2

3 8 0 2 0 0

4 0 0 0 0 0

5 0 0 0 0 0

6 0 0

7 0 1

0 0 7 0 0 0

0 0 0 9

11 0 0 0

0 0

1、给出顺序存储的稀疏矩阵类型定义(包括三元组定义) 2、给出链接存储的稀疏矩阵类型定义(包括三元组结点定义) 2、给出此稀疏矩阵的三元组数组的存储结构图。

十、广义表:A(a,(b,c,d),(#),((e,f),g))

要求1:画出此广义表的图形表示。

要求2:画出此广义表带表头附加结点的存储结构。 要求3:此广义表长度:4 ;此广义表深度: 3 。

要求4:会用求广义表长度和求广义表深度算法进行递归过程的推导。

十一、使用栈在计算机语言的编译过程中进行语法检查,只检查C++程序中的花括号、方括号、圆括号是否配对,算法:

试分析流程图后对下面算法中横线上空缺的语句进行填充,并在//符号后对语句进行文字说明,将填充的内容填入到程序中的字母序列中。

int BracketsCheck(char* fname) {

13

Stack a; InitStack(a); char ch;

14

while(ifstr>>ch) { }

if( F: StackEmpty(a) ){

cout<<\switch(ch) { }

case'{': case'[': case'(':

Push(a,ch); break;

//A: 字符进栈

case'}':

if(Peek(a)=='{')

Pop(a);

//B: 读栈顶元素进行判断 // C: 栈顶元素出栈

else

return 0;

break;

case']':

if( D: Peek(a)==’[ ‘ )

Pop(a);

else

return 0;

break;

case')':

if(Peek(a)=='(')

E:Pop(a) ;

else

return 0;

return 1;}

else{

cout<<\return 0;}

十二、已知线性表A={a1、a2、……an}采用链接存储结构,其数据域由4个值域组成,假设依次为 char code[]

char name[] int max int min

要求:

1、定义单链表结点(包括对数据域的定义); 2、从单链表的表头删除一个结点。 (参考答案)

答1: goods{ char code[5];

};

char name[15]; int max; int min;

ypedef struct t goods ElemType; struct sNode { ElemType data;

};

struct sNode *next;

答2:ElemType DeleteFirstList(struct sNode** HL) {

15

ElemType temp; struct sNode* p=*HL;

if(*HL==NULL){

}

}

printf(\exit(1);

*HL=(*HL)->next; temp=p->data; free(p); return temp;

16

十三、画出P15【算法1-3】简单选择排序的流程图,并带入5个整型数值进行排序过程分析,写出排序在执行过程中数组元素的变化。 int i,j,k,x i=0 i

b[i]?b[k] i++ end

Y Y N Y N 十四、教材上的习题:

17