?/p>
1
?/p>
绪论
5
.选择题:
CCBDCA
6
.试分析下面各程序段的时间复杂度?/p>
?/p>
1
?/p>
O
?/p>
1
?/p>
?/p>
2
?/p>
O
?/p>
m*n
?/p>
?/p>
3
?/p>
O
?/p>
n
2
?/p>
?/p>
4
?/p>
O
?/p>
log
3
n
?/p>
?/p>
5
)因?/p>
x++
共执行了
n-1+n-2+
……+
1= n(n-1)/2
,所以执行时间为
O
?/p>
n
2
?/p>
?/p>
6
?/p>
O(
n
)
?/p>
2
?/p>
线性表
1
.选择?/p>
babadbcabdcddac
2
.算法设计题
?/p>
6
)设计一个算法,通过一趟遍历在单链表中确定值最大的结点?/p>
ElemType Max (LinkList L ){
if(L->next==NULL) return NULL;
pmax=L->next; //
假定第一个结点中数据具有最大?/p>
p=L->next->next;
while(p != NULL ){//
如果下一个结点存?/p>
if(p->data > pmax->data) pmax=p;
p=p->next;
}
return pmax->data;
?/p>
7
)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表
的存储空间?/p>
void inverse(LinkList &L) {
//
逆置带头结点的单链表
L
p=L->next; L->next=NULL;
while ( p) {
q=p->next; // q
指向
*p
的后?/p>
p->next=L->next;
L->next=p; // *p
插入在头结点之后
p = q;
}