第1章 绪
1.1 有下列几种二元组表示的数据结构,试画出它们分别对应的图形表示,并指出它们分别属于何种结构。
(1) A= ( D,R ),其中,D = { a1,a2,a 3,a4 }, R={ }
(2) B= ( D,R ),其中,D = { a,b,c,d,e}, R={ (a,b),(b,c),(c,d),(d,e)}
(3) C= ( D,R ),其中,D = { a,b,c,d,e,f,g}, R={ (d,b),(d,g),(b,a),(b,c),(g,e),(e,f)}
(4) K= ( D,R ),其中,D = { 1,2,3,4,5,6}, R={ <1,2>,<2,3>,<2,4>,<3,4>,<3,5>,<3,6>,<4,5>,<4,6>}
(1) 集合
(2) 线性表 
(3) 树      (4) 图 
1.2 设n为正整数,求下列各程序段中的下划线语句的执行次数。
(1) i=1; k=0
while(i<=n-1)
{
k+=10*i ;
i++;
}   
(2) for (int i=1; i<=n; i++)
for (int j=1; j<=n; j++)
{ c[i][j]=0;
for (int k=1; k<=n; k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j]
}
解:
(1) n-1 
(2)
(3) x=0;  y=0;
for (int i=1; i<=n; i++)
for (int j=1; j<=i; j++)
for (int k=1; k<=j; k++)
    x=x+y;
(3)
1.3 指出下列个算法的功能,并求其时间复杂度。   
(1) int sum1(int n)
{
int p=1,s=0;
for (int i=1;i<=n; i++)
{ p*= i; s+=p;}
return  s;
}
(2) int sum2 (int n)
{ int s=0;
for ( int i=1; i<=n; i++)
{ int p=1;
for (int j=1; j<=i; j++) p*=j;
s+=p;
}
return s;
}
解:
(1) ,  T(n)=O(n)
(2) ,  T(n)=O(n2)
1.4 算法设计
有3枚硬币,其中有1枚是假的,与真币重量略有不同。如何借用一架天平,出?以流程图表示算法。
上机练习题
要求:给出问题分析、算法描述、源程序及运行截图,在线提交。
数据结构与算法题库
1. 设 a, b, c为3个整数,求其中位于中间值的整数。

第2章 线性表