واضح آرشیو وب فارسی:سایت ریسک: View Full Version : سوال در مورد ليست پيوندي درc++ nimja29-11-2008, 12:18 AMسلام من بايد 5-6 تا سوال و مسئله برنامه نويسي مربوط به ليست پيوندي رو حل كنم. اما اصلا نميدونم كه چطور بايد از ليست پيوندي در c++ استفاده كرد.اگه يه نفر بتونه يك مثال ساده برام بنويسه من ميتونم كه تمام مسائل رو حل كنم.چون مفهوم رو بلدم فقط پياده سازي اونو بلد نيستم. مثلا فقط يك برنامه بنويسيد كه ي 5 تا متغير رو بخونه و در ليست پيوندي ذخيره كنه و دوباره اون 5 تا رو در خروجي نشون بده. باز هم متشكرم nimja29-11-2008, 12:30 PMفقط خواهشا دوستان یکم سریعتر راهنماییم کنید. باید سوالها رو تا رو تا 3-4 روز دیگه تحویل بدم devil_ff200829-11-2008, 07:12 PMمن برنامه رو نوشتم فقط یه مشکل کوچیک داره حلش کنم چشم در خدمتم mahdi7s29-11-2008, 08:28 PMنمي دونم اين بدردت مي خوره يا نه؟ !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! nimja29-11-2008, 09:11 PMنمي دونم اين بدردت مي خوره يا نه؟ !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! خیلی متشکرم.بدون استفاده از کلاس ها نمیشه؟ این برنامه که شما نوشتید در خروجی آدرس لینک ها ی اعضا رو نشون میده؟ Mehran NZ29-11-2008, 09:20 PMمهدی جان این برنامت و که من دیدم اصلا هیچ ربطی به لیست پیوندی نداره که !!!خود برنامشم که اجرا کنی اول 5 تا عدد می گیره بعد یه سری اعداد نامفهوم بهت می ده :10: این لیست پیوندی سه تا تابع داره یکیش برای اضافه به اخر لیست یکی برای اضافه به اول لیست و اخری هم برای نمایش لیست هست !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! nimja30-11-2008, 08:34 AMممنونم تو خط پنجم این دستور چیکار میکنه؟ !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! Mehran NZ30-11-2008, 11:53 AMممنونم تو خط پنجم این دستور چیکار میکنه؟ !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! ببین همون طور که می دونی لیست پیوندی ساده یه نوع ساختمان داده هست که هر خونش از دو فیلد تشکیل شده یکیش شامل اطلاعات هست اون یکی هم شامل ادرس خونه بعدی که توی برنامه کلاس node رو براش تعریف کردم که دو تا خونه داره یکیش info اون یکی هم next خوب حالا توی کلاس لیست پیوندی که اصل کار با این هست هر خونه ای که توی حافظه درست می شه باید از نوع کلاس node باشه (که بتونه هر خونش دو تا فیلد داشته باشه) بخاطرهمین باید کلاس node رو دوست کلاس linkedList تعریف کنیم که اعضاش بتونن از نوع node تعریف بشن mahdi7s30-11-2008, 03:56 PMببخشيد ... اگه ميشه كمي در مورد ليست پيوندي توضيح بدين كه -> هر لسيت پيوندي از چه چيزهايي تشكيل شده؟ _ اصلا به چه دردي مي خوره؟ _ معمولا در چه جاهايي از ليست هاي پيوندي استفاده ميشه؟ و در نهايت يه كد خيلي ساده از يه ليست پيوندي بذاريد Mehran NZ30-11-2008, 05:12 PMببخشيد ... اگه ميشه كمي در مورد ليست پيوندي توضيح بدين كه -> هر لسيت پيوندي از چه چيزهايي تشكيل شده؟ _ اصلا به چه دردي مي خوره؟ _ معمولا در چه جاهايي از ليست هاي پيوندي استفاده ميشه؟ و در نهايت يه كد خيلي ساده از يه ليست پيوندي بذاريد خوب لیست پپیوندی یه نوع ساختمان داده هست یعنی یک چیزی هست که می شه داده ها رو در اون نگه داری کرد مثل ارایه ولی فرقش باارایه اینه که بصورت پویاهست یعنی از اول طولش مشخص نیست و هر بار که بخوای یک داده ای رو توش قرار بدی باید اول یه خونه براش درست کنی هر وقت هم که بخوای یک داده رو ازش پاک کنی باید اون خونه رو پاک کنی در این صورت حافظه بصورت بهینه استفاده می شه. البته لیست پیوندی خودش هم مشکلاتی داده مثلا جستجو که حتما باید بصورت خطی باشه بخاطر همین بحث استفاده از درختها پیش میاد ساده ترین نوعش هم لیست پیوندی یکطرفه ساده هست که کدش و بالا نوشتم این هم adt لیست پیوندی از کتاب جعفر نژاد: مجموعه ای از عناصر داده ها: مجموعه ای مرتب (دنباله ای متناهی) از عناصرداده ها است عملیات اصلی: ایجاد لیست تست خالی بودن لیست پیمایش لیست درج حذف nimja01-12-2008, 10:21 PMآقا متشکرم خیلی بدردم خورد.2 تا سوال ها رو تونستم حل کنم. فقط یه سوال: اگه بخواهیم 2 تا لیست پیوندی تعریف کنیم اون موقع باید چیکار کنیم؟چون یکی از سوال ها چک کردن برابری 2تا لیست پیوندیه. متشکرم Mehran NZ01-12-2008, 11:41 PMآقا متشکرم خیلی بدردم خورد.2 تا سوال ها رو تونستم حل کنم. فقط یه سوال: اگه بخواهیم 2 تا لیست پیوندی تعریف کنیم اون موقع باید چیکار کنیم؟چون یکی از سوال ها چک کردن برابری 2تا لیست پیوندیه. متشکرم خوشحالم که مشکلت حل شد در مورد سوالت کلاسش و که تعریف کردی حالا دو تا متغیر از نوع کلاسش تعریف کن مثلا توی بدنه اصلی برنامت بنویس LinkedList a,b; اینجوری دو تا لیست پیوندی داری یکی a و یکی هم b nimja02-12-2008, 05:21 PMخوشحالم که مشکلت حل شد در مورد سوالت کلاسش و که تعریف کردی حالا دو تا متغیر از نوع کلاسش تعریف کن مثلا توی بدنه اصلی برنامت بنویس linkedlist a,b; اینجوری دو تا لیست پیوندی داری یکی a و یکی هم b دستت درد نکنه. میشه تابعی برای چک کردن برابری این دولیست رو بنویسید؟ Mehran NZ02-12-2008, 07:33 PMببین نوشتن این جور برنامه ها یعنی نوشتن پروژه که خلاف قوانین هستش و باور بکن به ضرر خودته ولی این یکی و نوشتم البته کلاسش رو نه تابع - سعی کن حتما خودتم یه بار بدون اینکه برنامه من و نگاه کنی بنویسیش :10: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! nimja02-12-2008, 08:27 PMخیلی خیلی متشکرم. فقط این عبارت rootA=a.getRoot(); رو میشه یک توضیح مختصر بدهید؟ خودم فکر میکنم که به خاطر این باشه که آدرس اولین خونه (root) لیست پیوندی در متغیر قرار میده تا بعدا برای عمل مقایسه کردن از ابتدای لیست پیوندی شروع بکنه. درسته؟ Mehran NZ02-12-2008, 09:19 PMکاملا درسته http://www.getsmile.com/emoticons/smileys-91853/aiw/ok.gif و اگه دقت کنی برای بدست اوردن ریشه لیست پیوندی مجبور شدم که یه تابع جدیدیعنی getRoot رو برای لیست پیوندی تعریف کنم که متغیر root روبگیره درتابع isEqual هم می تونی tempA,tempB رو تعریف نکنی و مستقیما از rootA,rootB استفاده کنی ولی خوب اینجوری بنظرم درکش راحت تر هست بعد یه چیز مهم دیگه در اینجا هر دو تا لیست سه مقدار می گیرن اگه نمی دونی که اندازه های دو تا لیستت یکی هستند یا نه می تونی از لیست پیوندی دارای سر لیست استفاده کنی و در همون اول تابع ازش استفاده کنی که اگه تعداد خونه های دولیست با هم برابر نبودند return 0; روبر گردونی که یعنی دو لیست برابر نیستند که البته همون طور که می دونی اینجور لیست پیوندی یکم بیشتر برنامه نویسی می خواد این هم لیست پیوندی دارای سرلیست !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! nimja04-12-2008, 12:53 PMیکی از سوال ها این هست که لیست پیوندیه B رو به انتهای لیست A وصل کنه. من برنامه اونو این طور نوشتم. ولی موقعی که میخواهم لیست A رو نمایش بده دیگه لیست B رو نشون نمیده !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! فکرکنم اشکال از این قسمتش باشه: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! Mehran NZ04-12-2008, 01:57 PMبله اشکال از همون قسمت هست در ضمن این تابع رو دلیلی نداره بصورت int تعریف کنی چون قرار نیست چیزی رو برگردونه فقط دوتا لیست و پیوند می ده و تمام پس بهتره که void تعریف بشه ببین تو الان باید اول از ریشه a حرکت کنی تا برسی به اخرین خونش بعد در اخرین خونه فیلد next رو بجای NULL به اولین خونه (ریشه ) b پیوند بدی اینجوری b خود بخود به a پیوند می خوره من برنامت و درست کردم (به شرط پایان حلقه while یه دقت ویژه داشته باش) !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! برنامه ای که شما نوشتی تا اخر لیست و میره tempA رو نول می کنه بعد اون و برابر دومین خونه b می کنه (و دراخرین خونه a هم هیچ تغییری بوجودنمیاره) مثلا توی برنامه ی خودت من یه تکه کد کوچیک اضافه کردم که مقدار tempA رو در اخر نشون بده- اگه برای a مقادیر 1-2-3 و برای b مقادیر 4-5-6 وارد کنی می بینی که tempA برابر عدد 5 می شه !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! nimja22-12-2008, 09:42 AMبرای اینکه بخواهیم جای 2تا گره رو عوض کنیم بدون اینکه به info دست بزنیم.باید از 4 تا اشاره گر استفاده کرد؟ میشه یک روش کار رو توضیح دهید؟ ممنونم Mehran NZ22-12-2008, 05:45 PMخوب این هم کاری نداره شکلش و برات کشیدم بالایی باید به پایینی تبدیل بشه ببین کجاش گنگه توضیح بدم http://nzmehran.persiangig.ir/p30world/Untitled-1.jpg nimja22-12-2008, 07:06 PMتو کدنویسی هاش مشکل دارم!! یعنی باید لیست رو مرتب کنم. ولی فقط با عوض کردن لینک. اون کدهایی که مربوط به عوض کردن 2 تا لینک گره هست رو مشکل دارم. Mehran NZ22-12-2008, 11:45 PMفرض کن در پست قبلیم توی اون شکلی که کشیدم سطر اول به ترتیب A,B,C و سطر دوم D,E,F باشه میخوایم جای B و E رو عوض کنیم من کدش و اینجوری نوشتم !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! nimja23-12-2008, 09:08 AMممنونم . این کدهایی که شما نوشتید رو متوجه شدم. ولی نتونستم تو برنامه ای که نوشتم(شما زحمتشو کشیدید) استفاده کنم. این برنامه رو ببینید:(برای مرتب کردن لیست پیوندی بدون تغییر info) !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! به تابع sort نگاه کنید: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! نمیدونم بعدش چیکار کنم؟؟؟ Mehran NZ23-12-2008, 02:09 PMببینید چون لیست خطی هستش شمل نباید temp رو برابر خونه ای بکنید که می خواید مرتب بشه بلکه باید در یک خونه قبل از اون قرار بگیره مثلا یه چیزی مثل کد پایین ولی با اضافه کردن کد پایین هم برنامه درست کار نمی کنه اگه هنوز هم با این چیزی که گفتم نمی تونید برنامه رو درست کنید با همین روشی که مرتب سازی رو دارید باهاش انجام میدید یه نمونش رو که روی ارایه پیاده سازی شده و بدون باگ هم باشه (دقیقا به همینصورت باشه همراه while , ...... ) رو بهم بدید تا توی دیباگش کمکتون کنم !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! tdk50x17-09-2009, 10:05 PMا سلام دوستان من بک گراند مهندسی کامپیوتر و برنامه نویسی با C رو ندارم. به دلایلی مجبور شدم درس Operating Systems رو بگیرم. متاسفانه 40 درصد نمره اختصاص به پروژه هایی داره که باید با C بنویسم. اولین پروژه مربوط به لیست های پیوندی میشه ظاهراً که اینجا کپی می کنم. انتظار ندارم که پروژه را برام انجام بدید اما به دلیل اینکه هیچی نمی دونم خواهش می کنم به صورت قدم به قدم بگید که باید چی کار کنم. الان دارم در مورد لیست های پیوندی مطالعه می کنم. لطفاً هر کی می تونه کمک کنه. Project 1 description For this homework, you will be constructing a linked list implementation in C using the templates provides above. You may need to modify the data structure (or add new data structures) defined in list.h. However, you MAY NOT modify the function defined in list.h. You may need to complete the function bodies in list.c. You can add new functions into list.h. Create a test program to generate, populate and manipulate S (S<M) linked list. Test data in the format of an M x N matrix will be provided. Toy example (10 x 11): 0 0 0 6 8 4 8 1 5 7 4 8 7 7 5 7 3 0 0 0 0 3 3 5 7 3 4 7 0 0 0 0 1 0 0 8 2 7 6 2 4 4 5 0 0 0 0 1 7 7 3 4 5 6 1 0 0 7 4 4 8 5 7 3 5 2 0 8 1 5 5 1 8 8 4 7 5 5 3 4 7 2 0 0 0 0 0 8 4 3 7 8 2 2 6 4 0 0 3 0 0 0 8 6 7 4 6 8 5 0 Project 1 Task Task Breaking down 1. Read the data into memory using file operations. 2. For the first S rows, put every element from the same row of the matrix into a new linked list, so you will have S linked lists. 3. For every link list, implement the f function to calculate the walking distances and record this distances into a linked list d. 4. Repeat the same operations for the rest rows (M-S). 5. Plot the curve with matlab about the values of d. 6. A written report is required. Due date: Sep. 28th, 2009. Project 1 (Intlist.h) #ifndef __intlist_h__ #define __intlist_h__ /* each entry in the list contains an int */ typedef struct intlist { int datum; struct intlist *next; } INTLIST; INTLIST *init_intlist( int n ); /* initializes the intlist with initial datum n */ int insert_intlist( INTLIST *lst, int n ); /* Inserts an int (n) into an intlist from the beginning*/ void list_append(INTLIST *list, void *datum); /* Inserts entry to the end of the list */ Void list_front(INTLIST *list); /*return the element at the front of the list, and remove it from the list*/ void list_map( INTLIST *list, void (*f)(void *) ); /*Applies a function to each element of the list */ void list_delete( INTLIST *list ); /* Deletes (and frees) all entries in the list */ #endif Project 1 Intlist.c #include <stdlib.h> #include “intlist.h” /* initializes the intlist with initial datum n */ INTLIST *init_intlist( int n ) { INTLIST *lst; lst = (INTLIST *)malloc(sizeof(INTLIST)); lst->datum = n; lst->next = NULL; return lst; } Project 1 myprogram.c #include <stdlib.h> #include “intlist.h” /* execution starts here */ int main() { INTLIST *lst; lst = init_intlist(1); insert_intlist( lst, 2 ); free( lst ); return 0; } Project 1 Makefile: putting everything together CC=gcc CFLAGS=-Wall -g LIBS=-lreadline -lm OBJS=intlist.o INCLUDES=common.h all: $(OBJS) $(CC) $(CFLAGS) $(OBJS) $(LIBS) -o myprogram .c.o: $*.h $(INCLUDES) $(CC) $(CFLAGS) -c $*.c clean: rm -f *.o myprogram سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 2630]