الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اللنكد لست

بدأه أحاول الصمود في 3 مارس 2008 · 17 رد · 2,236 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

انا مبتدئة في دراسة الداتا ستركشر

واتمنى تساعدوني

عندي مجموعة من الكتب .. عندي مجموعة من الكتب وحابة أسوي برنامج يساعدني في ترتيبها باستخدام اللنكد لست

أبغى أرتبها حسب دار النشر .. وفي حال كان لها نفس دار النشر

أرتبها حسب عناوينها ...

أرررررجو المســـاعدة

اذا كان فيه أكواد شبيهة بفكرة هذا الطلب

أو روابط وشروحات ممكن تفيدني

أنتظركم ,.,

#2

راجع :

/index.php?showtopic=152349

و :

/index.php?showtopic=152811

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#3

أشكرك الله يفرج عليكـ

لكن ياليت لو ألاقي أمثلة لبرامج محلولة للنكد لست

أحتاج أكواد لبرامج متنوعة عشان تصل المعلومة

لأني فهمت الأساسيات تقريبا والجزء النظري

لكن كيف تكتب بالسي بلس بلس

إلى الآن أجد صعووبة

#4

اهلين اختي

اكتبي الشيء الي مو واضح وان شاء الله نساعدك ,

تم تعديل هذه المشاركة بواسطة time1 في 3 مارس 2008 في 21:00

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#5

أخي جزاك الله خير

أنا الآن فهمت مبدأ اللنكد لست

لكن ما عارفة أكتب الاشياء اللي ابغاها على شكل كود

مو فاهمة كيف أكتب اللست على شكل كود

يعني عندي مجموعة كتب

طبعا لازم أسويها في كلاس

قائمة الكتب هذي أبغى أربطها مع بعض

بحيث كل نود

راح يكون فيه اسم الكتاب والمؤلف ودار النشر

أنا بدأت وكتبت الكلاس كذا

class book

}

private:

string title;

string author;

string publisher;

public:

book();

};

مو عاااارفة وش أكتب فنكشنات عشان أرتب قائمة الكتب

فحطيت بس كونستركتر

لكن كيف أقدر أربط الكتب بلنكد لست عن طريق الكود

وأرتبهم على حسب أسماء دار النشر ؟

#6

:(

#7

أختى, الكلاس اللى إنتى كتبتيها تمثل كتاب واحد فقط. حتى تعملى لنكد لست من الكتب ممكن تعملى كلاس تانية تنفذى فيها المبادئ اللى تعلمتيها بس بدل ما تكون النود فى اللينكد ليست int مثلا لأ حتكون من النوع book.

class book_list{
	book* head;
public:
	book_list();
	insert_book();
	delete_book();
	~book_list();
};

طبعا دى الكلاس الأساسية ممكن تزودى عليها زى ما تحتاجى.

#8

شكرررررررررررررررن لك

الله يعطيك العافية

طيب انا قريت دروس كثيرة وشروووحااات وحاااولت

وهذي محاولتي لأني بديت شوووووي افهههم

لكن مادري اذا صح ولا لأ

بلييييز ساعدوووني

template <class TYPE> 
	struct NODE 
	 {
	 TYPE data;
	 NODE *link;
	 };


template <class TYPE, class KTYPE> 
	class List 
	 {
	 private:
	 NODE<TYPE> *head;
public:
	 List (void);
	 ~List (void);
bool _insert (NODE<TYPE> *pPre, 
	 TYPE dataIn);
	 void _delete (NODE<TYPE> *pPre,
	 NODE<TYPE> *pLoc,
	 TYPE *dataOutPtr);

};


template <class TYPE, class KTYPE>
List<TYPE, KTYPE> :: List (void) 
{

head = NULL;
count = 0;
}

template <class TYPE, class KTYPE>
bool List<TYPE, KTYPE> :: _insert (NODE<TYPE> *pPre, 
TYPE dataIn)
{
NODE <TYPE> *pNew;


if (! (pNew = new NODE<TYPE>))
	 return false;

	pNew->data = dataIn; 
	pNew->link = NULL; 

	if (pPre == NULL)
	 {
	 // Adding before first node or to empty list. 
	 pNew->link = head;
	 head = pNew;
	 } // if pPre 
	else
	 {
	 // Adding in middle or at end 
	 pNew->link = pPre->link;
	 pPre->link = pNew;
	 } // if else 

	 // Now check for add at end of list 
	 if (pNew->link == NULL)
	 // Adding to empty list. Set rear 
	 rear = pNew;

	count++;

	return true;
}

template <class TYPE, class KTYPE>
void List<TYPE, KTYPE> :: _delete (NODE<TYPE> *pPre,
NODE<TYPE> *pLoc, 
TYPE *pDataOut) 
{

*pDataOut = pLoc->data;
	if (pPre == NULL)
	 // Deleting first node 
	 head = pLoc->link; 
	else
	 // Deleting any other node
	 pPre->link = pLoc->link;

	// Test for deleting last node 
	if (pLoc->link == NULL)
	 rear = pPre;

	count--;
	delete pLoc;

	return;
}

أتوقع نااقص الفنكشن اللي ترتب لي الكتب

بحسب دار النشر

كيييييييف أسويها ؟؟

أنتظرررررركم بأسررررررررررررررررررررع ووووووووووووقتتتتتتتتت

#9

حسنا , هل يوجد قيود للمسألة ؟

يعني لازم تحليها بالكلاسات او الستركت ؟ ولا اي شي الموهم الحل وخلاص ؟

لي عودة

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#10

أخي هذا نص السؤال

Sarah's received the following books package for her bookstore.

ويوجد قائمة باسماء الكتب ومؤلفيها

ثم المطلوب الحل باللنكد لست

Sarah decided to arrange the books according to their publishers' names, where books with same publisher are arranged according to their titles.

Write a program using the suitable ADT to help Sarah to arrange her books and edit the list by adding and removing books frequently

ياليت اليوم الله يرضى عليييييييييييييك

#11

أعتقد إن الكود دا بيرتب تصاعديا>

template <class TYPE, class KTYPE>
bool List<TYPE, KTYPE>::sorted_insert(TYPE d){
	NODE<TYPE> *current = head;
	if (head->data > data)
		return _insert(NULL, d);
	else{
		while (current->link!=NULL && current->link->data<d)
			current = current->link;
		return _insert(current, d);
	}
}

بس طبعا لازم تعرفى المعاملات > و < بالنسبة لل book

class book{
private:
	string title;
	string author;
	string publisher;
public:
	book();
	bool operator > (book b){
		if (author == b.author)
			return (title>b.title);
		else
			return (author>b.author);
	}
	bool operator < (book b){
		if (author == b.author)
			return (title<b.title);
		else
			return (author<b.author);
	}
};

أنا لم أختبر الكود لذلك من المرجح أن يكون فيه أخطاء.

#12

الله يسعدك دنيا وآخررررررره

مشكووور

طيب ممكن تشرح لي وش أسوي في المين ؟؟

يعني أعرف أبوجكت وأنادي الفنكشنز وخلاص ؟؟

تم تعديل هذه المشاركة بواسطة أحاول الصمود في 7 مارس 2008 في 19:38

#13

أيوة تعرفى ال object و تدخلى فى لوب تقرأى فيها الداتا من الفايل اللى عندك ثم تنادى على الفنكشن sorted_insert و تديلها الداتا اللى قرأتيها, و تكررى اللوب حتى ينتهى الفايل.

#14

يعني كذا صح ؟؟

int main()
{
List L;
for(int i=0;i<10;i++)
cin>>title;
cin>>author;
cin>>publisher;

L.sorted_insert();

}

بليز

طيب كيف أعطي البيانات للفنكشن عشان ترتبها

هي ما تاخذ الا باريمتر واحد

...

ساعدني الله يجزاك خير

#15

مرحبا اختي

اذا كنتي تتابعي الدروس التي وضعتها وتسيري علي منهجها , فسأضع لكي دالة الترتيب ,

ملاحظة : انا امشي على منهج ابسط الطرق واوضحها ,

سأضع لكي الان كود كامل يوضح انشاء قائمة متصلة واضافة عقد إليها كل عقدة تحتوي على رقم الطالب واسمه , ومن ثم ترتيب العقد على حسب الاسم

ملاحظة : " تستطيعي بعد ذلك ان تغيري قيم المعلومات بأن تضيفي مثلا اسم الناشر اسم الشركة رقم الهاتف اسم ...إلخ "

انظري إلى هذا الكود

#include<iostream.h>
#include<string.h>
#include<malloc.h>


struct node{
	int num;
	char name[10];
	node * next;
};

typedef node *node_ptr;

void append (node_ptr &first,int n,char name[10])
{
	if(first==NULL)
	{


		first=(node *)malloc(sizeof(node));
		first->num=n;
		strcpy(first->name,name);
		first->next=NULL;
	}
	else
	{
	node_ptr  p,q;
	p=first;
	while(p->next!=NULL)
	{

	p=p->next;
	}
		q=(node *)malloc(sizeof(node));
		q->num=n;
		strcpy(q->name,name);
		q->next=NULL;
	p->next =q;
	}

}



void Display(node_ptr&q)
{
	node_ptr p;
	p=q;
		while(p!=NULL)
	{
		cout<<p->name<<":"<<p->num<<endl;
	p=p->next;
	}
}

int Count(node_ptr&q)
{
	node_ptr p;
	p=q;
	int count=0;
	while(p!=NULL)
	{
		count++;
		p=p->next;
	}
	return count;
}



void Sort(node_ptr &q)
{

	node_ptr p;
	p=q;
	while(p->next!=NULL)
	{

		if(strcmp(p->name,p->next->name)==1)
		{
			int t=p->num;
			int a=strlen(p->name);
			char *n=new char [a];
			strcpy(n,p->name);

			p->num=p->next->num;
			strcpy(p->name,p->next->name);
			p->next->num=t;
			strcpy(p->next->name,n);

	}
		p=p->next;
	}
}




main()
{

	node_ptr q=NULL;


	append(q,5,"ASEL");
	append(q,20,"ALI");
	append(q,30,"ADEL");
	append(q,40,"ABDO");

	Display(q);


	return 0;
}

يقوم هذا الكود بأنشاء اربعة عقد غير مرتبه , وقد تم شرح جميع العقد بالتفصيل وبالصور من خلال المواضيع السابقة ,

الدرس الأول

الدرس الثاني

اما دالة Sort فهي التي لم تشرح إلى الان , ولا ارى انها تحتاج لشرح.

لاحظي عند تنفيذ البرنامج ستكون المخرجات

post-82612-1204909472_thumb.jpg

اما عند اضافة الدالة Sort وتنفيذها بعدد العقد Count

اضيفي هذه الاسطر قبل الدالة Display

	for(int i=0;i<Count(q);i++)
		Sort(q);

ستكون النتائج

post-82612-1204909482_thumb.jpg

اعتذر عن تأخري عن الاجابة لظروف صحية ,

هذا وتمنياتي لكي بالتوفيق .

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#16

شافاك الله

كتب الله لك الأجر أخي وجزاك كل خير

شكرااااااا جزيلاااااااا

#17
int main()
{
List L;
for(int i=0;i<10;i++){
	book temp;
	cin>>temp.title;
	cin>>temp.author;
	cin>>temp.publisher;
	L.sorted_insert(temp);
}
return 0;
}

أه فى حاجة كمان لسة واخد بالى منها دلوقتى, إنك جوة دالة ال sorted_insert دى تتأكدى إن ال head لا تساوى NULL و فى حالة أنها تساوى NULL (الليست فاضية) تضعى ال head هى ال new node.

#18

الله يرضى عليييك يارب

أفدتني شكرا ً لك

مشكورين جميعا ما خيبتوا ظني في منتداكم الرائع

ألف شكر

مواضيع مشابهة