生活随笔
收集整理的這篇文章主要介紹了
C++头插法尾插法建立单链表,合并两个有序单链表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
A和B是兩個單鏈表(帶表頭結點),其中元素遞增有序。設計一個算法,將A和B歸
并成一個按元素值非遞減有序的鏈表 C,C由A 和B 中的結點組成。
#include<iostream>
#include<stdlib.h>using namespace std
;typedef struct LNode
{int data
;struct LNode
* next
;
}LNode
;
void createlistR(LNode
*&C
,int a
[],int n
)
{LNode
*s
,*r
;C
=new LNode
;C
->next
=NULL;r
=C
;for(int i
=0;i
<n
;i
++){s
=new LNode
;s
->data
=a
[i
];r
->next
=s
;r
=r
->next
;}r
->next
=NULL;
}
createlistF(LNode
*&C
,int a
[],int n
)
{LNode
* s
;C
=new LNode
;C
->next
=NULL;for(int i
=0;i
<n
;i
++){s
=new LNode
;s
->data
=a
[i
];s
->next
=C
->next
;C
->next
=s
;}
}void merge1(LNode
* A
,LNode
* B
,LNode
*&C
)
{LNode
* p
=A
->next
;LNode
* q
=B
->next
;LNode
* r
;C
=A
;C
->next
=NULL;r
=C
;free(B
);while(p
!=NULL&&q
!=NULL){if(p
->data
<q
->data
){r
->next
=p
;p
=p
->next
;r
=r
->next
;}else{r
->next
=q
;q
=q
->next
;r
=r
->next
;}}
if(p
!=NULL)r
->next
=p
;if(q
!=NULL)r
->next
=p
;
}int main()
{int a
[]={1,4,7,8,10,15,77,90};int b
[]={1,2,3,4,5,6,9};LNode
* head1
=new LNode
;createlistR(head1
,a
,8);LNode
* head2
=new LNode
;createlistR(head2
,b
,7);LNode
* p
=head1
->next
;while(p
){cout
<<p
->data
<<" ";p
=p
->next
;}cout
<<endl
;p
=head2
->next
;while(p
){cout
<<p
->data
<<" ";p
=p
->next
;}cout
<<endl
<<"*************合并后***********"<<endl
;LNode
* result
;merge1(head1
,head2
,result
);p
=result
->next
;while(p
){cout
<<p
->data
<<" ";p
=p
->next
;}return 0;
}
總結
以上是生活随笔為你收集整理的C++头插法尾插法建立单链表,合并两个有序单链表的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。