习题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; }
4。
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<<”链表为空!”< { if(max〈p->data) 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—>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 因篇幅问题不能全部显示,请点此查看更多更全内容