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

لیست پیوندی

ارسال:
  

bahman2000 پرسیده:

لیست پیوندی

با سلام : دوستان مشکلی در قسمت مبحث لیست پیوندی درس ساختمان داده برام پیش اومده و اون اینه که تمامی الگوریتم های مربوط به لیست پیوندی از جمله add, delete,... را به طور کامل متوجه می شوم و از روی شکل می فهمم که چه اتفاقی می افتد ولی در برنامه نویسی
وقتی می خوام به جای آرایه از لیست پیوندی استفاده کنم اصلا نمی دونم چیکار کنم . مثلا می خواهیم ۳ عدد از کاربر دریافت و بر روی آن ها عملیاتی را انجام دهیم :
[تصویر:  223746_01678568133873330374.jpg]
اگر بخواهیم از آرایه استفاده کنیم کد مربوطه در ++c به صورت بالا خواهد بود ولی اگر بخواهیم از لیست پیوندی استفاده کنیم چه کدی را بایستی بنویسیم؟(هدف کلی: گرفتن n عدد از کاربر و ذخیره آن ها در حافظه و بعد انجام عملیات مورد نظر)
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

black_knight پاسخ داده:

RE: لیست پیوندی

سلام
خوب این یکم با آرایه فرق داره.در آرایه ما فقط به مکانی برای دخیره سازی نیاز داشتیم و چیز دیگه ای نیاز نداشتیم.
اما تو اینجا حداقل چیزی که لازم داریم یک مکان برای دخیره سازی و یک پونتر برای نگه داری آدرس گره بعده.
پس باید به آبجکت بسازیم. که این کارو با کلاس یا استراکچرها انجام می دیم .
گره ی ما باید حداقل ۲ تا ویژگی که در بالا اشاره شد رو داشته باشه
کد:
struct Node {
    int data;
    Node* next;
};
بعد این کار شما باید نوع لیستو مشخص کنید مثلا هددار-چرخشی-دوطرفه....
ما فرض می کنیم لیست هددار باشه پس یک هد می سازیم (در غیر اینصورت اطلاعات بیشتری به تعریف گره باید اضافه کرد)
کد:
struct Node *head = new Node;
حالا که آبجکت گره رو داریم کافیه هر بار که اطلاعاتو از کاربر می گیری یک گره در ابتدای لیست بسازی و مقدارو داخلش بریزی
کد:
addNode(head,20);
به این صورت
کد:
int i,value;
    for (i=0;i<10;i++){
        cout<<"number"<<i<<":";
        cin>>value;
        addNode(head,value);
    }
فکر نکنم توی کد نویسیش مشکلی داشته باشی
اما باز من کداضافه کردن گره رو میذارم
کد:
void addNode(struct Node *head, int n) {
    Node *newNode = new Node;
    newNode->data = n;
    newNode->next = NULL;

    Node *cur = head;
    while(cur) {
        if(cur->next == NULL) {
            cur->next = newNode;
            return;
        }
        cur = cur->next;
    }
}
الان یک لیست داریم که برای نمایشش می تونیم یک تابع بنویسیم با این فراخوانی
کد:
display(head);
و با این پیاده سازی
کد:
void display(struct Node *head) {
    Node *list = head;
    while(list) {
        cout << list->data << " ";
        list = list->next;
    }
    cout << endl;
    cout << endl;
}

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

ارسال:
  

bahman2000 پاسخ داده:

RE: لیست پیوندی

(۱۳ آبان ۱۳۹۲ ۰۷:۱۶ ب.ظ)black_knight نوشته شده توسط:  سلام
خوب این یکم با آرایه فرق داره.در آرایه ما فقط به مکانی برای دخیره سازی نیاز داشتیم و چیز دیگه ای نیاز نداشتیم.
اما تو اینجا حداقل چیزی که لازم داریم یک مکان برای دخیره سازی و یک پونتر برای نگه داری آدرس گره بعده.
پس باید به آبجکت بسازیم. که این کارو با کلاس یا استراکچرها انجام می دیم .
گره ی ما باید حداقل ۲ تا ویژگی که در بالا اشاره شد رو داشته باشه
همانطور که خودم حدس می زدم بایستی با تابع ها سرو کار داشته باشیم.
با تشکر از اطلاع رسانی
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
Question لیست پیوندی porseshgar ۰ ۱,۶۸۱ ۲۸ بهمن ۱۳۹۷ ۰۳:۵۱ ب.ظ
آخرین ارسال: porseshgar
  فعالین تبلیغات در تلگرام+لیست کامل zibaara ۱ ۱۶ ۲۳ دى ۱۳۹۶ ۱۰:۲۱ ق.ظ
آخرین ارسال: royka
  لیست کنفرانس های معتبر جهت ارسال مقاله alilash ۰ ۱,۹۵۸ ۲۸ شهریور ۱۳۹۶ ۰۲:۲۸ ب.ظ
آخرین ارسال: alilash
  موارد صف پشته و لیست پیوندی و.. در برنامه نویسی هم کاربرد داره؟ R.g- ۳ ۲,۹۶۵ ۰۵ شهریور ۱۳۹۶ ۰۱:۲۳ ق.ظ
آخرین ارسال: R.g-
  لیست انتخاب رشته پیشنهادی رشته آیتی هر دو گرایش alilash ۰ ۲,۲۲۵ ۲۲ خرداد ۱۳۹۶ ۱۲:۱۹ ب.ظ
آخرین ارسال: alilash
  روش تبدیل یک لیست صعودی از اعداد به max heap peace2013 ۳ ۳,۳۳۷ ۱۸ فروردین ۱۳۹۶ ۰۲:۴۰ ب.ظ
آخرین ارسال: msour44
  مرتبه ی زمانی ادغام k لیست مرتب شده mostafaheydar1370 ۲ ۲,۷۱۸ ۰۷ آبان ۱۳۹۵ ۱۰:۴۳ ب.ظ
آخرین ارسال: mostafaheydar1370
  لیست پیوندی - ساختمان مقسمی wskf ۲ ۲,۰۹۳ ۲۶ مهر ۱۳۹۵ ۰۹:۴۵ ق.ظ
آخرین ارسال: Pure Liveliness
  لیست ژورنال‌های معتبر ربوده یا هایجک شده ali139084 ۰ ۲,۱۴۵ ۲۱ مرداد ۱۳۹۵ ۰۸:۲۵ ب.ظ
آخرین ارسال: ali139084
  نحوه دریافت اطلاعات از لیست ویو در کد c# ۸۸۱۴۹۸۰۴ ۲ ۳,۷۵۳ ۲۶ بهمن ۱۳۹۴ ۰۴:۳۴ ب.ظ
آخرین ارسال: amirhosein71

پرش به انجمن:

Can I see some ID?

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

Feeling left out?


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

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

Feeling left out?


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