PDA

نسخه کامل مشاهده نسخه کامل : خيلي حياتيه خواهشن کمک کنيد (ساختمان داده در ++c)



oranoos_mta
10-01-2008, 23:49
ساختمان داده در ++c
خيلي حياتيه خواهشن کمک کنيد (ساختمان داده در ++c)
فرض کنید 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 است . از هیچ گره ی اضافی استفاده نکنید . زمان اجرای این الگوریتم را حساب کنید.

oranoos_mta
12-01-2008, 12:55
بابا یکی به دادم برسه

bad_boy_2007
12-01-2008, 17:52
ساختمان داده در ++c
خيلي حياتيه خواهشن کمک کنيد (ساختمان داده در ++c)
فرض کنید 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 است . از هیچ گره ی اضافی استفاده نکنید . زمان اجرای این الگوریتم را حساب کنید.





لیستهای پیوندی X و Y مرتب هستن ؟
اگه هر دو لیست مرتب ان که خیلی ساده است الگوریتمش و مرتبه اجرایی از نوع اوی N هست ولی اگه نامرتب ان مرتبه اجرایی فکر کنم از نوع اوی N^2 هست و یکم الگوریتمش پیچیده تر میشه ؟
حالا لطفا بگو چطوره ؟