فرض کنید x=(x_1,x_2,…,x_n)و y=(y_1,y_2,…,y_m ) دو لیست پیوندی هستند . الگوریتمی برای ادغام این دو لیست بنویسید تا اگر m<=n باشد لیست پیوندی
z=(x_1,y_1,x_2,y_2,…,x_m ,y_m ,x_(m+1),…,x_n) بدست آید و اگر m>n باشد
z=(x_1,y_1,x_2,y_2,…,x_n ,y_n ,x_(n+1),…,y_m ) بدست آید.
پس از ادغام دو لیست x و y باید لیستهای خالی را نشان دهند زیرا هر گره ی اولیه در x و y اکنون در z است . از هیچ گره ی اضافی استفاده نکنید . زمان اجرای این الگوریتم را حساب کنید.
List-pointr merge(list-pointer ptr1,list-pointer ptr2)
{
List-pointer temp;
Temp=(list-pointer ) new (sizeof(list-node));
If(is-full(temp))
{
Cout<<"memory is full\n";
Exit(1);
}
Int i ;
If( m <= n )
{
For(temp=ptr1 ; temp -> link ; temp=temp -> link )
{
Temp -> link = ptr2 ;
i += 1;
If ( I == m)
Break;
}
While ( i != n ) {
Temp -> link = ptr2;
i += 1;
}
if( m > n )
{
خوب به نظر شما این تابع همون کارو میکنه یا نه کلا تابع غلطه کمکم کنید
فرض کنید x=(x_1,x_2,…,x_n)و y=(y_1,y_2,…,y_m ) دو لیست پیوندی هستند . فرض کنید در هر لیست پیوندی ‘ گره ها به ترتیب غیر نزولی مقادی فیلد data شان قرار گرفته اند.الگوریتمی برای ادغام این دو لیست بنویسید تا لیست پیوندی جدید z تولید کند که در آن گره ها نیز به همین ترتیب هستند . پس از ادغام دو لیست x و y باید لیستهای خالی را نشان دهند زیرا هر گره ی اولیه در x و y اکنون در z است . از هیچ گره ی اضافی استفاده نکنید . زمان اجرای این الگوریتم را حساب کنید.