برنامه ای که یک لیست پیوندی رو بگیره و بر عکس کنه
برنامه ای که یک لیست پیوندی رو بگیره و بر عکس کنه
سلام سامان جان.نوشته شده توسط saman_uv
منظور شما از بر عکس کردن لیست پیوندی یعنی چه عزیز ؟
لیست پیوندی که همان link list و pointer ها هستند که برای سرعت و همچنین بهینه استفاده کردن از حافظه هستند.
شما چه برنامه ای میخواهید که با لیست پیوندی نوشته شود .
اصولا میگن که یک Quick sort رو با لیست پیوندی بنویسید .
ولی بر عکس کردن این که مانی نمیده .
حالا شما بفرمائید که چه برنامه ای باشه آیا هر برنامه ای و راجب بر عکس کردنش هم کمی توضیح بدین متشکر میشم.
سلام فرق نمیکنه چه برنامه ای باشه مثلا یه لیستی که دارای 5 تا عضو رو با استفاده از کد نویسی بگیره و اونو سروته کنه همین .فقط با کد نویسی باشه ها
سلام من یک معکوس کردن یک لیست رو میگذارم.
procedure invert(var x:pointer);
var
p,q,r:pionter;
begin
p:=x
q:=nil;
while p<> nil do
begin
r:=q;
q:=p;
p:=p^.link; yani {p moves to nest node}
q^.link:=r; yani {link q to preceding node}
end;
x:=q;
end; {of invert}
اینم ایجاد یک گره از لیست پیوندی
procedure create 2(var first:pointer);
var
second:pointer;
begin
new(first);
new(second);
first^.link:=second; yani {link first node to second}
second^.link:=nil; yani {last node}
first^.data:=10; yani entekhab data dar first}
second^.data:=20; yani {entekhab data dar second node .yani eshare gar dovomi}
end; {of create 2}
شرمنده کردی سوالات مربوط به ساختمان داده رو تو کدوم قسمت بپرسم بهتره؟
سلام دوست عزیز .نوشته شده توسط saman_uv
به نظرم فلان همینجا شما سوالات رو بپرس بد اگه ممکن هست فقط خودت موضوع رو ویرایش کن و بزن تمامی مسائل و مباحث مربوط به ساختمان داده ها در پاسکال ((Data structures.
اگه خوب توضیح ندادم دیگه شما ببخشید آخه اینجا متاسفانه کد ها رو نمیتونی از چپ به راست بنویسی و من خیلی سعی کردم که لاقل سیمیکالن ها درست سر جاش باشه.
اگه بخواهیم 2 تا لیست مرتب رو بگیره در هم ادغام کنه و مرتب بنویسه چی کنیم؟اگه کد نویسیشم بکنین حال دادین
:oops:
سلام که مینویسم =تحقیق یکسان بودن دو لیست با استفاده از جستجو ی ترتیبی هست
Procedure verify(F1,F2:alist;n,m:integer);
var
i,j:integer;
marked:array[1..maxsize] of boolean;
begin
for i:=1 to m do marked[i]:=false;
for i:=1 to n do
begin
seqsearch(f2,j,m,f1[i].key);
if j=0 then writeln(F1[i].key,'not In F2.')
else begin
if F1[i].other <>F2[j].other then
writeln('Discrepancy In ' , F1[i].key,F1[i].other,F2[j].other);
marked[j]:=true;
end;
end;
for i:=1 to m do
if Not marked[i] then writeln (F2[i].key,'Not In F1.');
end;
سلام خیلی اقایی ولی فکر کنم به سوال دقت نکردی میخوام 2 تا لیست رو قاطی کنه و مرتب بنویسهنوشته شده توسط saman_uv
یعنی این که ما که 2 تا لیست مراتب شده داریم میخواهیم ببینیم که آیا این 2 لیست با هم اول یکی هستند یا نه برای این که ادغام کنیم.
یا این که
درج به لیست مراتب شده .
Procedure insert(r:records;var list:alist; i:integer);
begin
while r.key <list[i].key do
begin
list[i+1]:=list[i];
i:=i-1;
end;
list[i+1]:=r;
end;
شما برای این که بخواهید از رکورد استفاده کنید و هی نزنید نام رکورد بد . بد کی اول with رو باید بزنید در برنامه .
که در داخل این برنامه اینطوری استفاده کنید.
r.key
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)