View Full Version : سوال: لینک لیست ها
hafez1
پنج شنبه 14 اردیبهشت 1391, 00:53 صبح
اگه یه نود داشته باشم که مشخصات یه استاد توش باشه حالا بخام یه استاد جدید بش اضافه کنم (به اول لیست ) این کد درسته؟؟؟؟
head=&newprof
newprof.next=prof.back
حالا اگه بخایم یه استادی رو حذف کنیم بنا به این که ممکنه اول یا وسط یا آخر لیست باشه کدش چی جوری می شه.
من زیاد توی حذف و اضافه کردن node وارد نیستم.مثلا کی می نویسیم newprof.next و کی می نویسیم newprof->next اگه می شه برام توضیح بدین.
hafez1
پنج شنبه 14 اردیبهشت 1391, 01:18 صبح
اگه بخام با همین لینک لیستا استادی رو پیدا کنم تابع search چی جوری می شه؟؟
BORHAN TEC
پنج شنبه 14 اردیبهشت 1391, 02:42 صبح
چرا از گوگل استفاده نمی کنی؟:متفکر:
به نظر من اگه مقاله زیر رو بخونی همه چیز دستگیرت میشه:
http://www.codeproject.com/Articles/24684/How-to-create-Linked-list-using-C-C
one hacker alone
پنج شنبه 14 اردیبهشت 1391, 13:15 عصر
سلام دوست عزیز کد کامل رو بزار
hafez1
پنج شنبه 14 اردیبهشت 1391, 13:48 عصر
#include<iostream>
#include <fstream>
#include<stdio.h>
#include<string.h>
using namespace std;
struct prof
{
char firstname[34];
char lastname[20];
char position;
int personalCod;
int groupdepartmentNumber;
prof *next;
prof *privew;
prof *temp;
};
int main()
{
head=&newprof
newprof.next=prof
Ananas
پنج شنبه 14 اردیبهشت 1391, 16:53 عصر
سلام.
تابع main رو باید تغییر بدی. این یک نمونه :
int main()
{
prof *head = new prof;
head->next = new prof;
prof head2;
head->privew = &head2;
}
hafez1
پنج شنبه 14 اردیبهشت 1391, 20:38 عصر
با توجه به جواب بالا اطلاعات استاد از قبیل نام و فامیل و کد پرسنلی و... هم به لینک لیست اضافه میشه؟؟؟؟؟؟؟؟؟
کامروا
پنج شنبه 14 اردیبهشت 1391, 20:59 عصر
حذف از لیست غیر حلقوی :
اگر نود اول نباشه :
if ( Current != first_ )
{
Current->prev_ = first_;.
Current->prev_->next_ = Current->next_;
}
else
{
first_ = Current->next_;
if ( first_ != NULL )
first_->prev_ = NULL;
}
اگر نود آخر نباشه :
if ( Current->next_ != NULL )
Current->next_ = Current->prev_;
else if ( Current->prev_ != NULL )
Current->prev_->next_ = NULL;
BeginnerProgrammer
پنج شنبه 14 اردیبهشت 1391, 21:27 عصر
اگه insert و بهتره عنوان یک تابع بنویسید خیلی مناسبتره ، و استفاده از یه کلاسی مثل کلاس زیر خیلی کارتونو راحتر میکنه:
struct prof
{
char firstname[34];
char lastname[20];
char position;
int personalCod;
int groupdepartmentNumber;
};
class professor{
public:
void insert();
void Add(prof p);
void del();
prof *next;
prof *prev;
prof *first;
};
اینجوری خیلی راحت تره مثلا تابع add اینجوری میشه :
first.prev=new prof;
first.prev=p;
p.next=first;
first=p;
تابع حذفشم از کدی که دوستان نوشتن میتونید استفاده کنید.
با توجه به جواب بالا اطلاعات استاد از قبیل نام و فامیل و کد پرسنلی و... هم به لینک لیست اضافه میشه؟؟؟؟؟؟؟؟؟
وقتی دارین یه استراکتو به اولین نود(یا هر جایه دیگه ) اضافه میکنید این استراکت شامل تمام اطلاعاته مربوط به استاد پس همه ی این اطلاعاتم تو همون یک نمونه ای که دارین اضافه میکنید وجود داره و به لیست اضافه میشه!
hafez1
پنج شنبه 14 اردیبهشت 1391, 22:59 عصر
ببخشید کار تابع insert این جا چیه؟؟؟؟؟؟؟
BeginnerProgrammer
پنج شنبه 14 اردیبهشت 1391, 23:12 عصر
این تابع برای درست کردن لیست اولیه س . ولی میتونید یه جورایی با add ادغامش کنید( این دیگه ابتکاریه، اصلاً کار سختیم نیست ) ولی این راه حل معمولشه.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.