文档库 最新最全的文档下载
当前位置:文档库 › 数据结构第2章习题答案

数据结构第2章习题答案

数据结构第2章习题答案
数据结构第2章习题答案

第2章习题答案

●习题2-1

1.79 62 34 57 26 48

2.26 34 48 57 62 79

3.48 56 57 62 79 34

4.56 57 79 34

5.26 34 39 48 57 62

●习题2-3

1.

ElemType delete_min(List &L)

{ int i,len,min;

ElemType e;

if(Emptylist(L)

{ printf(‘线性表为空!\n’); exit(1);}

len=LenthList(L);

min=1;

for(i=2;i<=len;i++)

if(GetList(L,min)>GetList(L,i)) min=i;

e= GetList(L,min);

DeleteList(L,e,min);

InsertList(L, GetList(L, LenthList(L)),min);

return e;

}

2.

bool delete_st(ListTyle &L, ElemType s, ElemType t) {

int i;

ElemType e;

if(Emptylist(L)

{ printf(‘线性表为空!\n’); return false;}

i=1;

while(i<=LenthList(L))

{

If(GetList(L,i)>=s&&GetList(L,i)<=t)

DeleteList(L,e,i);

else

i++;

}

return ture;

}

void MergeList( List La , List Lb , List &Lc ) {

InitList(Lc);

int i=j=1 , k=0, La_len , Lb_len;

ElemType a , b;

La_len = LenthList (La); Lb_len=LenthList (Lb);

While ( ( i<=La_len) && ( j<=Lb_len ) ) {

a=GetList( La , i ); b=GetList( Lb , j );

if ( a<=b ) { InsertList ( Lc , a, ++k ) ; ++i ; }

else { InsertList ( Lc , b , ++k ) ; ++j ; }

}

while ( i<=La_len)

{ a=GetList( La , i++ ) ; InsertList ( Lc , a, ++k ); }

while ( j<=Lb_len )

{ b=GetList( Lb , j++ ) ; InsertList ( Lc , b,++k ); } }//MergeList

习题2-4

2.

ElemType GetMax(LNode* HL)

{ LNode* p;

ElemType max;

If(HL==NULL)

{ cout<<”链表为空!”<

p=HL;

max=p->data;

while(p!=NULL)

{ if(maxdata) max=p->data;

P=p->next;

}

return max;

}

3.

int countList(LNode *HL, ElemType x )

{

LNode *p;

int count=0;

for(p=HL; p!=NULL; p=p->next)

if(p->data==x) count++;

return count;

}

4.

LNode* BuildLNode(int *a, int n)

int i;

LNode* HL,p,q;

HL=p=(int *)malloc(sizeof(LNode));

p->data=a[0];

for(i=1;i

{

q=(int *)malloc(sizeof(LNode));

q->data=a[i];

q->next=NULL;

p->next=q;

p=q;

}

return HL;

}

5.

LNode* MergeLNode(LNode *&La, LNode *&Lb) {

ElemType m;

LNode *p;

while(Lb!=NULL)

{ m=Lb->data;

InsertList(La,m,0);

p=Lb;

Lb=Lb->next;

free(p);

}

return La;

}

习题2-6

要修改的地方如下:

(1)初始化语句:

LNode *cp=HL;

LNode* ap=NULL;

改为:

LNode *cp=HL->next;

LNode* ap=HL;

(2)删除下列把新结点插入到表头的语句段:

if(ap==NULL){

newptr->next=HL;

HL=newptr;}

else

相关文档