اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

اضافه کردن بعد از یک گره خاص در لیست حلقوی

0 امتیاز
4,686 نمایش

من همین کار یعنی اضافه کردن عنصر بعد یک گره خاص رو می خوام در لیست پیوندی حلقوی انجام بدم. چطور میشه این کار رو انجام داد؟ در مورد حذف هم توضیح بدید لطفا

وابسته به یک پاسخ به دلیل: افزودن به لیست بعد از گره‌ای خاص
پرسیده شده جمعه ۲۲ آذر ۱۳۹۲ در C++ توسط Helen  
ویرایش شده جمعه ۲۲ آذر ۱۳۹۲ توسط A.Firouzi

1 پاسخ

0 امتیاز

فرض کنیم عنصر ابتدای لیست رو با list نمایش بدیم و تمامی عناصر لیست یک id دارند. در تابع اول مقدار item به تابع ارسال میشه، یک گره ایجاد میشه و در مکان مناسب قرار می‌گیره(در صورت وجود) در تابع دوم فقط مکان یک گره که گره بعد از باید حذف بشه به تابع ارسال میشه.


void InsertNode(ItemType item,Node mynode)
{
Node *newnode;
Node *location;
newnode = new Node;
newnode -> data = item;
location = list;
if(list != NULL)
{
while(location -> id != mynode -> id)
location = location -> next;
newnode -> next = location -> next;
location -> next = newnode;
}
else
return;
}
void DeleteNode(Node mynode)
{
Node *location;
Node *temp;
location = list;
if(list != NULL)
{
while(location -> id != mynode -> id)
location = location -> next;
location = location -> next;
temp = location;
location = location -> next;
delete temp;
}
else
return;
}
شما جهان خود را می‌سازید، همان‌گونه که در آن پیش می‌روید.(وینستون چرچیل)
پاسخ داده شده جمعه ۲۲ آذر ۱۳۹۲ توسط A.Firouzi  

خیلی ممنون ولی من متوجه نشدم کجای این کد، حلقوی بودنش رو در نظر گرفتید!!

حلقوی بودن به این معنیه که گره آخر لیست به گره اول اشاره کنه. برای گره‌ای که قراره اضافه بشه یا حذف بشه مهم عناصر قبل و بعدشه. در واقع تنها حالت خاص اینه که لیست یک گره داشته باشه که در اون حالت هم اگه مقدار next رو درست تخصیص داده باشید، این کد کار می‌کنه. در حالت‌های دیگه هم مشکلی نیست. فکر کنم اگه یک نمودار برای خودتون از این کد بکشید، منظورم رو بهتر متوجه بشید.