تالار گفتمان مانشت
سوال از درهم سازی - نسخه‌ی قابل چاپ

سوال از درهم سازی - narmafzar24 - 18 مهر ۱۳۹۱ ۱۰:۳۲ ب.ظ


با عرض سلام خدمت دوستان
سوال زیر ازکتاب ساختمان داده قلزم است که برای این داده ها از روش زنجیری کردن اون رو حل کرده ولی من قسمت فیلد LINK رو متوجه نمیشم چرا برای Xمقدار ۴ گرفته و برای E مقدار ۱ و بقیه ۰ شدند ؟
لطف کنید این مسئله رو تشریح کنید با تشکر


سوال از درهم سازی - esi - 18 مهر ۱۳۹۱ ۱۱:۴۱ ب.ظ

بخش لینک برای ایجاد زنجیره استفاده میشه، اگه چندتا داده دارای مقادیر یکسانی از تابع درهم سازی باشه ، اولین داده در محل خودش قرار می گیره ، دومین داده با collision برخورد می کنه (چون جاش قبلا پر شده، در این مثال ابتدا E ذخیره شده و سپس A وارده شده و با برخورد روبرو شده) و برای دنبال کردن این داده ها داده را در اولین مکان خالی درج و از خانه مربوطه به این مکان لینک ایجاد میشه تا شما بعدها بتونید با دنبال کردن این لینک داده مورد نظر رو پیدا کنید.
مثلا دنبال A هستید، تابع درهم ساز مقدار ۴ رو میده، از طریق لیست به خونه ۴ مراجعه می کنید اما E اونجاست سپس از طریق لینک موجود در E دنبال داده مورد نظر رفته و A رو پیدا می کنید و چون بعد A داده دیگری نیست به معنای اتمام زنجیره مقدار لینک ۰ گذاشته میشه .
برای مقادیر D و X هم همینطور. اول X در خونه ۴ جدول هش ذخیره میشه و سپس D وقتی میخواد درج بشه چون قبلا X اونجا بوده، یه لینک برای دسترسی به D ایجاد می کنه.