PDA

View Full Version : لیست پیوندی در C



ahora_mazda
شنبه 30 اردیبهشت 1385, 02:12 صبح
اولا سلام به همه دوستان
دوما ورود خودم رو به این سایت به خودم تبریک میگم
ومتاسفم که دیر اینجارو پیدا کردم
سوما از دوستان عزیز کی میتونه در مورد لیست پیوندی در C یه توضیح اساسی به من بده!
دارم پروژه پایان ترم ساختمان داده ها مینویسم و در لیست پیوندی مشکل دارم
ممنون میشم

Mahdi_Delphi
شنبه 30 اردیبهشت 1385, 08:33 صبح
سلام
خوش اومدی
در مورد چیه لیستهای پیوندی توضیح میخوای ؟
پیاده سازی شون ؟
ببین لیستهای پیوندی انواع مختلفی دارن.مثلا لیستهای تک پیوندی،دو پیوندی،حلقوی و.........
با کلاسها هم به سادگی قابل پیاده سازی هستند.
یک کلاس برای پیاده سازی ساختمان داده هر گره (Node) لازم داری.
یه کلاس هم برای لیستت که مجموعه ای از گره هاست.
با استفاده از تخصیص حافظه پویا،هر وقت نیاز به درج عنصری در لسیت بود،فضای اونو میگیری و به یه متغیر نسبت میدی،بعد هم در جای مناسبی از لسیت اضافه اش میکنی.
یکی از جالبترین مباحث ساختمان داده ها لسیتهای پیوندی هستند که کاربردهای زیادی هم دارن.

ahora_mazda
شنبه 30 اردیبهشت 1385, 23:14 عصر
راستش دقیقا نمیدونم
من باید یه برنامه بنویسم که مثلا چک هایی رو که صادر میکنم در یه فایل ذخیره کنه
وچک هایی که میگیرم رو در یه فایل دیگه
ضمنا باید مشخص کنم که چک ها نقد شده اند یا نه
و جستجو با شماره چک وتغییر چک ها از نزد مشتری به نقد و چک دیگران نزد من به نقد و حذف چک از لیست و نمایش چک ها رو بدم
باید دو struct تعریف کنم:
1- ورود اطلاعات چک خودم
2- ورود اطلاعات چک دیگران
باید شماره چک ها تکراری نباشند
ضمنا تعداد هم مشخص نیست پس باید از تابع malloc استفاده شه
و ..............
که من متاسفانه دیگه مغزم کار نمیکنه
آخه من همزمان درس برنامه سازی پیشرفته 2 و درس مبانی برنامه سازی ویژوال پاسکال رو هم دارم
کاملا گیج کننده است
این برنامه رو هم حتماباد تاآخر این هفته تحویل بدم

ahora_mazda
شنبه 30 اردیبهشت 1385, 23:19 عصر
ضمنا نمایش هر 4 نوع چک رو هم به صورت جدا داشته باشه
منظور چک های خودم نقد شده
چک ها خودم نزد مشتری
چک های دیگران نزد من
چک های دیگران که من نقد کردم
مشخصات چک ها هم که نام بانک ، نام ، نام خانوادگی ، شماره حساب جاری ، شماره چک(تکراری نباشد) و مبلغ چک
گیج کننده است

فریبرز توانا
سه شنبه 02 خرداد 1385, 15:10 عصر
لیست پیوندی چیست ؟

bijan kamkar
دوشنبه 15 خرداد 1385, 19:48 عصر
من هم ورودت رو تبریک می گم
و پیشنهاد می کنم که کتاب ساختمان داده های مهندس جعفرنژاد قمی بگیری
این کتاب خیلی عالی انواع لیست های پیوندی رو گفته
به نظر من بهترین راه برای یاد گرفتن لیست های پیوندی همین کتاب
موفق باشی

فرهاد

bijan kamkar
دوشنبه 15 خرداد 1385, 19:53 عصر
اقای توانا لیست های پیوندی در ساختمان داده ها در قمست ساختمان داده های پویا قرار می گیره و باعث می شه که در ذخیره و بازیابی اطلاعات در میزان حافظه صرف جویی کرد
این یک تعریف ساده از ساختمان داده

فرهاد

Asad.Safari
دوشنبه 15 خرداد 1385, 20:58 عصر
نمونه ای از لیست پیوندی !

yosoje
جمعه 03 شهریور 1385, 10:59 صبح
نمونه ای از لیست پیوندی !

در مورد برنامه ای که نوشتی بیشتر توضیح بده برای من کمی نامفهوم بود
:متعجب: :متفکر: :گیج:

Asad.Safari
جمعه 03 شهریور 1385, 17:27 عصر
کجاش نامفهومه ؟؟؟
بگید تا توضیح بدم.


موفق باشید

yosoje
جمعه 03 شهریور 1385, 20:59 عصر
لطفا درمورد نحوه عملکرد تابع add_node بیشتر توضیح بده.
در داخل ساختار employ از متغییرهای idnext,*nnext,*occnext,*lnext*
چه استفاده هایی میشه چون به نظر من برای اتصال دادن دو عضو از لیست به همدیگر از یک متغییر اشاره گر که در داخل ساختار تعریف میشود استفاده میکنند اگر من اشتباه میکنم لطفا برایم توضیح دهید
باتشکر
:متفکر: :متفکر: :متفکر:

Armanprogrammer
سه شنبه 14 شهریور 1385, 13:59 عصر
لیست پیوندی ساختاری در ساختمان داده است که داده ها رو میتونین تو اون ذخیره کنین و برتری اون هم نسبت به صف و پشته به نامحدود بودن اونه و بیشترین کاربرد اون توی database هاست

Asad.Safari
چهارشنبه 15 شهریور 1385, 12:06 عصر
لطفا درمورد نحوه عملکرد تابع add_node بیشتر توضیح بده.
در داخل ساختار employ از متغییرهای idnext,*nnext,*occnext,*lnext*
چه استفاده هایی میشه چون به نظر من برای اتصال دادن دو عضو از لیست به همدیگر از یک متغییر اشاره گر که در داخل ساختار تعریف میشود استفاده میکنند اگر من اشتباه میکنم لطفا برایم توضیح دهید
باتشکر


با سلام !

چون در این ساختار لیست به 4 نوع مرتب میشه !
1- برحسب id
2-بر حسب Name
3- برحسب Occeaption
4- برحسب Location

هر یک از اشاره گرهای زیر آدرس گره بعدی از نوع خود را نگه میداره
idnext,*nnext,*occnext,*lnext*

lnext =Next Of Locaton Node Address
occnext = Next Of Occeptaion Node Address
nnext= Next Of Name Node Address
idnext = Next Of İd Node Address

موفق باشید
------------------------

norozi
جمعه 04 آبان 1386, 10:30 صبح
سلام
کسی میتونه کمکم کنه چه جوری char از ورودی بگیرم و در لیست پیوندی ذخیره کنم با++ c

با تشکر

emad_67
جمعه 04 آبان 1386, 11:37 صبح
سلام
کسی میتونه کمکم کنه چه جوری char از ورودی بگیرم و در لیست پیوندی ذخیره کنم با++ c

با تشکرابتدا یه struct بساز که یه پارامتر به عنوان char و یکی هم به عنوان next که اشاره گر به گره بعدی تو لیست هست باشه.
بعدش میتونی تو یه حلقه while تا جایی که مثلا کاراکتر '$' وارد نشده ، کاراکتر رو از ورودی بگیری و یک گره بسازی بعد از نسبت داده کاراکتر بهش تو لیست add کنی. در اضافه کردن یک گره باید توجه داشته باشی که همیشه مقدار next آخرین گره برابر NULL هست. پس ابتدا یک اشاره گر به اون struct باید بسازی و تخصیص حافظه کنی و اگه قراره که هر گره در انتهای لیست قرار بگیره بهتره همون اول مقدار next اون گره رو NULL کنی .

tdk50x
پنج شنبه 26 شهریور 1388, 19:59 عصر
با سلام
دوستان من بک گراند مهندسی کامپیوتر و برنامه نویسی با 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

programset
جمعه 23 بهمن 1388, 23:28 عصر
سلام
اينم يه برنامه ديگه با ليستهاي پيوندي كه آدرس هر نود رو در فايل ثبت ميكنه44014

milad45
جمعه 07 آذر 1393, 19:17 عصر
خسته نباشید عزیران اگه میشه منو راهنمایی کنید ممنون
برنامه ای بنویسید برای کالای یک انبار شامل 1000 نوع کالا یک لیست پیوندی یک طرفه با مشخصات نام - نوع- قیمت - تعداد کالا ایجاد کند . موارد زیر را انجام دهد
1) ایجاد کلاس کالا و ساخت لیست
2)نمایش تمام کالاها و نیز کالا های تمام شده
3) جستوجوی کالا بر این مشخصات ==> جستوجوی نام کالا ( توابع رشته ای) -کد کالا
ممنون میشم منو راهنمایی کنید دوستان عزیز