生活随笔
收集整理的這篇文章主要介紹了
                                
【数据结构】天勤 例2-3 (单链表归并操作)二、递减
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
 
                                
                            
                            
                            【例2-3】 A和B是兩個單鏈表(帶表頭結點),其中元素遞減有序。
 設計一個算法,將A和B歸并成一個按元素值遞減有序的鏈表C,C由A和B中的結點元素組成
 
void merge(LNode 
*A
,LNode 
*B
,LNode 
*&C
){LNode 
*p 
= A
->next
;LNode 
*q 
= B
->next
;LNode 
*s
;C 
= A
;C
->next 
= NULL;free(B
);while(p
!=NULL && q
!=NULL){if(p
->data 
<= q
->data
){s 
= p
;p 
= p
->next
;s
->next 
= C
->next
;C
->next 
= s
;}else{s 
= q
;q 
= q
->next
;s
->next 
= C
->next
;C
->next 
= s
;}}while(p
!=NULL){s 
= p
;p 
= p
->next
;s
->next 
= C
->next
;C
->next 
= s
;}while(q
!=NULL){s 
= q
;q 
= q
->next
;s
->next 
= C
->next
;C
->next 
= s
;}
}
 
#include <stdio.h>
#include <stdlib.h>typedef struct LNode{int data
;struct LNode *next
;
}LNode
,*LinkList
;void init(LinkList 
&L
){L 
= (LNode 
*)malloc(sizeof(LNode
));L
->next 
= NULL;
}void show(LinkList 
&L
){LNode 
*p
;p 
= L
->next
;while(p
!=NULL){printf("%d ",p
->data
);p
=p
->next
;}printf("\n");
}void CreateListHead(LinkList 
&L
){int n
,e
;L 
= (LNode 
*)malloc(sizeof(LNode
));L
->next 
= NULL;printf("以下使用前插法創建單鏈表\n輸入要輸入元素的個數\n");scanf("%d",&n
);printf("逆序輸入%d個元素\n",n
);for(int i
=0;i
<n
;i
++){LNode 
*temp 
= (LNode 
*)malloc(sizeof(LNode
));scanf("%d",&e
);temp
->data 
= e
;temp
->next 
= L
->next
;L
->next 
= temp
;}
}void merge(LNode 
*A
,LNode 
*B
,LNode 
*&C
){LNode 
*p 
= A
->next
;LNode 
*q 
= B
->next
;LNode 
*s
;C 
= A
;C
->next 
= NULL;free(B
);while(p
!=NULL && q
!=NULL){if(p
->data 
<= q
->data
){s 
= p
;p 
= p
->next
;s
->next 
= C
->next
;C
->next 
= s
;}else{s 
= q
;q 
= q
->next
;s
->next 
= C
->next
;C
->next 
= s
;}}while(p
!=NULL){s 
= p
;p 
= p
->next
;s
->next 
= C
->next
;C
->next 
= s
;}while(q
!=NULL){s 
= q
;q 
= q
->next
;s
->next 
= C
->next
;C
->next 
= s
;}
}int main(){LNode 
*A
,*B
,*C
;init(A
);init(B
);init(C
);CreateListHead(A
);CreateListHead(B
);merge(A
,B
,C
);printf("\n以下為鏈表A和鏈表B歸并成一個按元素值遞減有序的鏈表C\n");show(C
);return 0;
}
                            總結
                            
                                以上是生活随笔為你收集整理的【数据结构】天勤 例2-3 (单链表归并操作)二、递减的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                            
                                如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。