لیست پیوندی چرخشی

v.b.f1

Active Member
با سلام خدمت دوستان

اگه ممکنه یه توضیحی در مورد لیست پیوندی چرخشی بدین
اخه تو جزوات گشتم خوب توضیح ندادن

باتشکر
 

the_king

مدیرکل انجمن
با سلام خدمت دوستان

اگه ممکنه یه توضیحی در مورد لیست پیوندی چرخشی بدین
اخه تو جزوات گشتم خوب توضیح ندادن

باتشکر

در لیست پیوندی هر عنصر موقعیت عنصر بعدی رو مشخص می کنه، به همین دلیل هر عنصر یک اشاره گر
داره تا موقعیت عنصر بعدی در اون ذخیره بشه. در لیست پیوندی عادی اشاره گر آخرین عنصر لیست 0 (null) است،
چون بعد از اون دیگه عنصر دیگه ای نیست که بهش اشاره کنه. شیوه تشخیص دادن انتهای لیست هم دقیقا
همینه، یعنی اگر عنصری اشاره گر اش 0 بود، عنصر انتهای لیست پیوندی است.

اما در لیست پیوندی چرخشی همونطور که از اسمش مشخصه آخرین عنصر به اولین عنصر لیست اشاره میکنه،
یعنی اشاره گر آخرین عنصر 0 نیست و به عنصر شروع لیست اشاره داره. اگر این لیست پیوندی چرخشی
رو بصورت ساده پیمایش کنید هیچوقت به انتهاش نمی رسید چون مثل یک حلقه بسته است.

در لیست پیوندی عادی هر موقعی که عنصری به انتهای لیست پیوندی اضافه میشه یا از آخرش عنصر حذف میشه،
اشاره گر آخرین عنصر رو روی 0 تنظیم می کنند تا عنصر انتهای لیست همچنان مشخص باشه.

اما در لیست پیوندی چرخشی هر موقعی که عنصری به انتهای لیست پیوندی اضافه میشه یا از آخرش عنصر
حذف میشه، اشاره گر آخرین عنصر رو روی اولین عنصر تنظیم می کنند تا این وضعیت چرخشی بودنش همچنان
حفظ بشه.
 

v.b.f1

Active Member
ممنون دوست عزیز مثالی در این مورد ندارید
که چگونه توی برنامه ها ازش استفاده میکننن

یه کدی که بدونم روش کارش چیه چطوریه
البته با این توضیحات همه چی رو گرفتم ولی به صورت کد میخوام

میخوام بدونم چطوری ازش استفاده میکنن

البته اگه زحمتی نیست بازم ممنونم بابت راهنمایی هاتون
 

v.b.f1

Active Member
دوستان من یه کدی دارم میخوام بدونم این در همین مورده

اگه جواب درسته به زبان سی میخوامش که بفهمم جریانش چیه

کد:
{=======================INSERT BACK ======================}
procedure insertback(var s:pointer ; x:char ; f:char);
var
   q,p : pointer;
   b,t : pointer ;
begin
 new(p);
  p^.info := x ;
   q := s;
    b := nil;
    if s=nil then
    writeln(' List Is Empty ')
    else
     begin
      repeat

if q^.info=f then
        begin
         if s^.next=s then
          begin
           p^.next := s;
             q^.next := p;
               s := p;
                 end
                  else
                    begin
                     p^.next := q;
                      if b=nil then
                       begin
                       t:=s;
                       while t^.next <> s do
                      t:=t^.next ;
                    t^.next :=p ;
                  p^.next :=q ;
                 s:=p;
               end
             else
           b^.next:=p;
         end;
       end;
      b:=q;
    q:=q^.next;
  until q=s;
  end;
end;


{=======================DELETE SELECT ====================}
procedure deleteselect(var s:pointer; f:char);
 var t,p,q:pointer;
  begin
   if s=nil then
     writeln(' List Is Empty ')
       else
        begin
        if s^.next=s then
         s:=nil
          else
           begin
            p:=s;
             q:=nil;
              repeat
               if p^.info=f then
                begin
                 if s^.next=s then
                  s:=nil
                  else
                 if q=nil then
                begin
               t:=p;
              while t^.next<>s do
            t:=t^.next;
           t^.next:=s^.next;
          end
         else
        q^.next:=p^.next
       end;
      q:=p;
     p:=p^.next;
    until p=s;
  end;
 end;
 
آخرین ویرایش:

v.b.f1

Active Member
روش کارشو به صورت کد کسی نداره یه کدی که بدونم چطوری ازش واسه نوشتن یه برنامه استفاده میکنن
 

جدیدترین ارسال ها

بالا