زمان کنونی: ۰۹ اردیبهشت ۱۴۰۳, ۰۶:۳۱ ب.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

برنامه معکوس کردن لیست پیوندی یک طرفه

ارسال:
  

aamitis پرسیده:

برنامه معکوس کردن لیست پیوندی یک طرفه

سلام
برنامه معکوس کردن لیست پیوندی یک طرفه در کتاب مقسمی به شرح زیر است:


;p= first
;q=nil
while p<>nil Do
begin
;r=q
;q=p
;p=p^.link
;q^.link=r
;end
;first=q

در صورتی که به نظرم این غلطه چون آخرین نود هم اشاره خواهد کرد به اولی
و این درست است:
;p=r= first
;p=p^.link
while p<>nil Do
begin
;q=p
;p=p^.link
;q^.link=r
;end
;first=q

نظر شما چیه؟
من اشتباه میکنم؟
چرا؟
نقل قول این ارسال در یک پاسخ

۲
ارسال:
  

Nima Masghadi پاسخ داده:

برنامه معکوس کردن لیست پیوندی یک طرفه

این سه تا اشاره گر p و q و r رو مثل تام و جری و اون سگه در نظر بگیر که همش دنبال همدیگه بودن!
ما برای معکوس کردن هر گره باید آدرس گره قبلش رو داشته باشیم و همچنین چون بعد از معکوس کردن هر گره آدرس گره بعدش رو هم نیاز داریم تا بتونیم اون رو هم معکوس کنیم (اگر آدرسش رو ذخیره نکنیم بعد از معکوس کردن گره فعلی آدرس گره بعدی رو نداریم و بقیه لیست از دست میره) باید همیشه آدرس یک گره جلوتر و یک گره عقب تر رو داشته باشیم!
حالا r همیشه آدرس گره قبل و p همیشه آدرس گره بعد رو نگه می داره و q هم ادرس گره ای که میخوایم معکوسش کنیم. واسه همینه که میگیم :
q->link=r ( اشاره کردن گره فعلی به گره قبلیش)
r=q
q=p
p=p->link
ببین این سه خط اخر اشاره گرها دارن دنبال همدیگه میزارن!(همون تام و جری و سگه!) و با هم جلو میرن.
در مرحله آخر هم p به null اشاره می کنه و q به گره آخر و r به گره ما قبل آخر و وقتی ما گره آخر رو به گره ماقبل آخر اشاره می دیم باید ابتدای لیست بشه q
به این ترتیب لیست معکوس میشه و مشکلی هم پیش نمیاد
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

svk7 پاسخ داده:

RE: برنامه معکوس کردن لیست پیوندی یک طرفه

با الگوریتم اولی یه مثال حل کردمو در پایان معکوس شدو مشکلی نداشت(پیوست)


فایل‌(های) پیوست شده

نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

aamitis پاسخ داده:

RE: برنامه معکوس کردن لیست پیوندی یک طرفه

اما
این r مرحله اول که برابر q شده چرا خانه قبل از q قرار گرفته؟
من اینطوری در نظر گرفتم که دقیقا rهم اشاره میکنه به جایی که qاشاره میکنه و به همین دلیل اشتباه در میاد
و اینکه چرا اینطوری در نظرش نگیریم؟

مگه R دقیقا برابر q نیست؟ خب باید آن هم در خانه آخر قرار گیرد

در واقع من اینطوری در نظر گرفتم
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

Masoud05 پاسخ داده:

RE: برنامه معکوس کردن لیست پیوندی یک طرفه

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

ارسال:
  

aamitis پاسخ داده:

RE: برنامه معکوس کردن لیست پیوندی یک طرفه

(۱۸ مرداد ۱۳۹۲ ۱۲:۰۹ ق.ظ)Masoud05 نوشته شده توسط:  اشتباه ت اینه که داری لیست رو بصورت دوار (چرخشی ) در نظر میگیری، در لیست اولیه گره آخر به جایی اشاره نمی کنه پس بعد از معکوس کردن هم گره اول به جایی اشاره نباید بکنه .

نه اصلا ربطی به دوار در نظر گرفتن یا نگرفتن نداره
بعدم من دوار در نظر نگرفتم لیست اولیه رو


مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

برنامه میکنه لیست رو دوار به همین علتم میگم اشتباست و برنامه خودم درسته
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

svk7 پاسخ داده:

RE: برنامه معکوس کردن لیست پیوندی یک طرفه

p= first
;q=nil
while p<>nil Do
begin
;r=q
مهم نیس r به کجا اشاره میکنه چون همون مرحله ی اول r=qمیشه یعنی r به جایی اشاره میکنه که qاشاره میکنه

من برا این rرو به نود وسطی اشاره دادم تا در نتیجه پایانی مکان نود وسط مشخص بشه
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

aamitis پاسخ داده:

برنامه معکوس کردن لیست پیوندی یک طرفه

(۱۸ مرداد ۱۳۹۲ ۰۴:۵۶ ب.ظ)svk7 نوشته شده توسط:  p= first
;q=nil
while p<>nil Do
begin
;r=q
مهم نیس r به کجا اشاره میکنه چون همون مرحله ی اول r=qمیشه یعنی r به جایی اشاره میکنه که qاشاره میکنه

من برا این rرو به نود وسطی اشاره دادم تا در نتیجه پایانی مکان نود وسط مشخص بشه

چرا مهم نیست؟
مهمه
چون بعد میخوایم بگیم qای که اشاره کرده به pحالا اشاره کنه به r
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

aamitis پاسخ داده:

برنامه معکوس کردن لیست پیوندی یک طرفه

من که متاسفانه قانع نشدم باز
توضیحاتتون خوب بود وباعث میشه تو ذهنم بیشتر بمونه امامشکل منو حل نمیکنه
من نمیدونم مشکل از کجاست اگه اشتباه میکنم اگه هم نه بگید که اشتباه نمیکنم

توضیحاتتون جالب بود
دقیقا من هم همین مطلب رو میخوام بگم توی کتاب از اول لیست شروع کرده و چون لیست یک طرفه هست باعث ایجاد دور میشه چون به خانه قبل خودش میخواد اشاره کنه و خراب کاری میشه

من اومدم از دومین عنصر لیست شروع کردم و گفتم به قبلیش که عنصر اولی هست اشاره کنه و همین طور با تفسیر شما به سمت جلو حرکت کنند

چه اشتباهی میکنم؟
چرا؟
نقل قول این ارسال در یک پاسخ

۰
ارسال: #۱۰
  

aamitis پاسخ داده:

برنامه معکوس کردن لیست پیوندی یک طرفه

آهان این شد یه دلیل منطقی و خوب

آخه بقیه خیلی متفاوت جواب دادن
و منو متوجه اشتباهم نمیکردن
و راه حل خودشونو ارائه دادن
البته بحث کردن خیلی عالیه دیگه تا عمر دارم این مسئله رو فراموش نمیکنم
واقعا عالی بود
لذتی بردم
چه سایت ماهیه و چه کاربرایی
داشتم نا امید میشدم کم کم
نقل قول این ارسال در یک پاسخ

۰
ارسال: #۱۱
  

zahraaahmadi29 پاسخ داده:

RE: برنامه معکوس کردن لیست پیوندی یک طرفه

دوستان سلام ، در مورد این الگوریتم میشه منطق p:=p^link رو بیشتر توضیح بدین ، من دلیلشو نمیفهمم
مشاهده‌ی وب‌سایت کاربر
نقل قول این ارسال در یک پاسخ

ارسال: #۱۲
  

targol پاسخ داده:

RE: برنامه معکوس کردن لیست پیوندی یک طرفه

(۰۶ دى ۱۳۹۳ ۱۱:۱۵ ب.ظ)zahraaahmadi29 نوشته شده توسط:  دوستان سلام ، در مورد این الگوریتم میشه منطق p:=p^link رو بیشتر توضیح بدین ، من دلیلشو نمیفهمم
یعنی الان p به همون جایی اشاره کنه که لینک p اشاره میکنه. یعنی p حرکت کنه به سمت جلو و به گره بعدی اشاره کنه.
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال: #۱۳
  

zahraaahmadi29 پاسخ داده:

RE: برنامه معکوس کردن لیست پیوندی یک طرفه

ممنون دوست عزیز، لطف کردی ، در واقع اشاره گر ها یکی یکی میان جلو
مشاهده‌ی وب‌سایت کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال: #۱۴
  

kamran_hyper@yahoo.com پاسخ داده:

RE: برنامه معکوس کردن لیست پیوندی یک طرفه

Node *new,*p;

new->Add=Null;
p=head;
while(p->Add != Null)
{
p=Head->Add;
Node *temp;
temp->Add=new;
temp->Data=p->Data;
new=temp;
}
Head=new;[/align]
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  کمک برای شروع برنامه نویسی seyed ehsn ۲۱ ۱۴,۳۷۶ ۲۴ بهمن ۱۴۰۲ ۰۵:۱۰ ب.ظ
آخرین ارسال: maryamjafari63
  پیدا کردن دستگیره manager_66 ۵ ۴,۴۸۸ ۲۸ آذر ۱۴۰۰ ۱۲:۴۴ ب.ظ
آخرین ارسال: blackhalo1989
  رودمپی برای برنامه نویسی Doctorwho ۱ ۱,۸۰۲ ۲۵ آذر ۱۴۰۰ ۰۳:۰۲ ق.ظ
آخرین ارسال: one hacker alone
  استخدام برنامه نویس یا کارآموز برنامه نویسی سی شارپ Hesitant_Girl ۰ ۱,۵۱۴ ۲۰ شهریور ۱۴۰۰ ۱۲:۰۲ ب.ظ
آخرین ارسال: Hesitant_Girl
  رودمپی برای یادگیری برنامه نویسی Doctorwho ۰ ۱,۶۰۴ ۲۳ اردیبهشت ۱۴۰۰ ۱۱:۲۲ ق.ظ
آخرین ارسال: Doctorwho
  درخواست برنامه برای اردینو در iot seokheiry ۱ ۳,۰۱۷ ۱۳ بهمن ۱۳۹۹ ۱۲:۵۵ ب.ظ
آخرین ارسال: iot-programer
  تا به حال شده خدا فرصت زندگی کردن دوباره رو بهت بده؟مرگ از جلوی چشمات رد شده؟ abraham ۲۱ ۱۴,۸۴۲ ۲۰ دى ۱۳۹۹ ۱۰:۵۶ ب.ظ
آخرین ارسال: raam
  جایی برای پیدا کردن توابع آماده جاوااسکریپت f.b ۷ ۴,۰۸۱ ۲۰ آذر ۱۳۹۹ ۰۴:۰۸ ب.ظ
آخرین ارسال: calm
  کدام زبان برنامه‌نویسی بهترین انتخاب است؟ elecomco ۲ ۲,۷۹۹ ۱۰ شهریور ۱۳۹۹ ۰۵:۱۶ ب.ظ
آخرین ارسال: kilookiloo
Sad مشکل در برنامه نویسی شیء گرا Xialu ۰ ۱,۹۸۵ ۰۵ شهریور ۱۳۹۹ ۱۲:۰۰ ب.ظ
آخرین ارسال: Xialu

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close