PDA

View Full Version : سوال: راهنمایی در مورد لیست پیوندی حلقوی



nazi73
پنج شنبه 21 آذر 1392, 21:21 عصر
سلام دوستان

من یه سوالی ازتون داشتم!!

ببینید من می خوام یه برنامه بنویسم که به کمک لیست پیوندی حلقوی عمل اضافه و حذف رو انجام بده...

برای عمل اضافه کردن در حالتی که بخوایم عناصر به آخر لیست پیوندی اضافه بشن کار راحته، اما کاری که من می خوام انجام بدم اینه که از کاربر بخوام اون گره ای که می خواد بعد اون عنصرش رو وارد کنه مشخص کنه، تا عنصر به بعد از اون اضافه بشه!!!

یعنی این که من از کاربر یه دونه اون عددی که می خواد اضافه کنه رو می گیرم، یه دونه هم مکان اون عددی که میخواد اضافه کنه رو!!!!

من این کار رو برای لیست پیوندی معمولی و همچنین لیست دو پیوندی انجام دادم، اما در مورد لیست حلقوی واقعا گیر کردم. میشه یه کم در مورد نوشتن کد تابع اضافه کردن یا همون Insert به این مدلی که می خوام بنویسم توضیح بدید :لبخندساده:

از راهنماییتون پیشاپیش نهایت سپاس را داریم :لبخند:

omidshaman
پنج شنبه 21 آذر 1392, 22:02 عصر
با استفاده از متد Advance یکی یکی cursor رو ببر جلو با اون node مقایسه کن اگر یکی بود عنصر رو بعدش اضافه کن ( مثل همون لیست پیوندی معمولی )

nazi73
پنج شنبه 21 آذر 1392, 22:03 عصر
اگه مثل لیست پیوندی معمولی باشه اونوقت چطوری حلقوی بودنش رو نشون می دیم؟؟؟

nazi73
پنج شنبه 21 آذر 1392, 22:08 عصر
من باید قسمت next اون عنصری رو که تازه وارد کردم رو به عنصر اول اشاره بدم یا اونی که آخر لیست قرار داره؟

مثلا فرض کنید این لیست من هست: 3 2 1

الان عنصر 7 رو بعد از 1 وارد می کنم یعنی اینجوری: 3 2 7 1

الان باید قسمت next (آدرس) اون عنصر جدیدم یعنی 7 رو به خونه ی اول اشاره بدم، یا قسمت آدرس آخرین عنصر لیست یعنی 3؟

fahimeh1512
پنج شنبه 21 آذر 1392, 22:54 عصر
باید قسمت next عدد 1 (تو این مورد ادرس عدد 2 هست) رو بذاری تو next عدد 7. بعد تو next عدد 1 ادرس 7 رو بده

omidshaman
پنج شنبه 21 آذر 1392, 22:54 عصر
مثل لیست پیوندی معمولی نیست !
لیست حلقوی این جوریه که عنصر آخر به عنصر اول اشاره می کنه برای تشخیص لیست پیوندی معمولی و حلقوی میشه از این روش استفاده کرد
http://www.7khatcode.com/88/%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5-%D9%84%DB%8C%D8%B3%D8%AA-%D9%BE%DB%8C%D9%88%D9%86%D8%AF%DB%8C-%DA%86%D8%B1%D8%AE%D8%B4%DB%8C?show=88#q88
شما توی لیست حلقوی یک cursor داری باید cursor =cursor->next رو این قدر انجام بدی که برسی به اون عنصری که می خوای
next عنصر 7 رو باید بزاری خونه بعدیش یعنی 1
اگر کدتو بزاری بهتر میشه توضیح داد

UfnCod3r
جمعه 22 آذر 1392, 09:26 صبح
یکم سوال رو بد پرسیدی باید دقیق بگی.
لیست حلقوی نود اخرش باید به اولی اشاره کنه طوری که بینهایت بشه پیمایش کرد. برخلاف بقیه که اخرش به null می رسیم :لبخندساده:
ی همچین چیزایی می تونی بنویسی
struct Node
{
Node* next;
Node* pre;
int value;
};

Node* InsertAt(int index, int value)
{
Node* node = getNodeByIndex(index);
Node* newNode = new Node;
newNode->pre = node;
newNode->next = node->next;
newNode->value = value;
node->next = newNode;
return newNode;
}

:متفکر: