Data struct with c++.pdf
Transcript of Data struct with c++.pdf
-
8/18/2019 Data struct with c++.pdf
1/58
-
8/18/2019 Data struct with c++.pdf
2/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
2
ٌ ا سدا رص رو ون اذا اد اداد ا دس
:
10 8 6 42دا بٌر .اي س
ادال
اصر
ان
ااي
رج
ٌ
اذي
و
وا
ادس
ا
وا جرٌ و اذي .واصر ادال ا ا ادس
Last in First Out
وصر ب LIFOذك د دا ادس ذه اره
ص:
*
ٌ
ل
ٌ
ن
رة
و
ادس
.طٌق ادس ن ل اصوت او ن* "دث ٌ م طرا ماوا ل"
ٌرج او ٌLIFOادس و* و اذي اٌر لدٌ . اي اصر اذي
ٌب ان وق ا ص* .دل صر ادس
ما ا و رصا نا فر فٌ
ٌ
ص "دد وص رإ ا ج" كذو نٌو رف ن و ا صر
اtop.
ٌ
ا topإ سٌpointerد و اوintرصا ا لٌد د نو
ٌاذا ن دي صو ن وصا ا01لوا ٌ وادم ادل صر
اٌر ن اtopٌصرٌن .ن اصر ا و ا ص دٌ0 ل
* . وا د اصر ا ا اد ٌpushادل اصر ا ادس
*
ادس
ن
اصر
ب
ٌ
pop
ٌ
ٌ
و :صورة
دل
و
ل
"
ام
ر
ٌ
و
واود
ٌ
ا
اوم
ان
اد
"
-
8/18/2019 Data struct with c++.pdf
3/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
3
اىَيبد ي ادس
:two operationsٌ ٌد و ان
ٌ
و
ادس
ا
اصر
ادل
ٌ
push
ٌ
و ٌpopاراج اصر ن ادس
ٌ
اpushا هرٌر ٌوم ادم ذا اصر وم دل اصر ا ادسادا()push
ورٌر اصر7اي اذا ارد ادل اصر ادا ءدا و ٌ ل 7ا ادس ٌا:
:ودpush(7);
و ىرا ٌاpopنا بٌ ٌا وٌذ ذه وم ب اصر ن ادسادا د
pop()ا اذ ٌاصر اذي م ن ادس ٌل رٌ وو::ود
int var=pop();خ ابه
ٍ
صا
اشاstack
-
8/18/2019 Data struct with c++.pdf
4/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
4
k Stacوا أ:
وا جرا را لادا( اٌر (ادال او ارج
: اشا هبا خيَخيَث ٍ
ب
ّ
شث
#include #include
int size=10;//ب
ْ
ب
ْ
ش
س ىا
زش
َ
م
َ
ىب
ي
ٍ
ب
ّ
شجىا
int a[10],top=-1;//ب
ْ
ش
خ
ٍ
ب
َ
10ب
ْ
اىزة
ثب
-1
int pop();// بْش اشا اىخ
void push(int[],int);// بْ شْب اىخ شْب ٍِ
ايب
main()
{
int i,k;// بْش شزٍ
ب ىشض ٍ
ازا ٍ
ب
ّ
شجىا
for(i=0;i
-
8/18/2019 Data struct with c++.pdf
5/58
-
8/18/2019 Data struct with c++.pdf
6/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
6
S = Push(10, S);
S = Push(5,S);
S = Push(2,S);S = Pop(S);
while (!IsEmpty(S)){
cout
-
8/18/2019 Data struct with c++.pdf
7/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
7
{if(!empty())for(int i=0;i
-
8/18/2019 Data struct with c++.pdf
8/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
8
{if(ps->top>(-1)){couttop]data=c;
p->next=top;top=p;
} }
//********************** int pop()
{
-
8/18/2019 Data struct with c++.pdf
9/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
9
node*p=top;
int x=p->data;
top=top->next;delete p;
return x;}
//************************ main()
{
int i,x;cin>>x;while(x>-1)
{push(x);
coutx;
}while(top!=NULL)
{cout
-
8/18/2019 Data struct with c++.pdf
10/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
1
: Queue :ٌ ب
ٍ
Queue :
ٌث ان اص لا ن تٌا زٌن ٌدم ٌت ٌل ٌدلو رة ن اذي ٌم ٌدل ار و اذي ٌم او واصر اذي . اااو طور
:ـ اٌو ل اطور او
ٌإلوطرٌؤا رطا ٌ ٌون صا ةرنٌرا ز
وظٌن ازو داطرؤر ٌؤاطورض او واد ن
وزاوودة
ٌ
ٌدلارٌنك ول او ٌدل س ف در
ش
ٌ
ٌصف ار اطوررٌن ٌراح ون اطور او اي صر
ٌ ود رة رك اطور م و ط واد"ا"ٌو ٌا اطور
نن
ٌ
را
وب
ٌ
اذف
ٌ
و
ٌ
ا
"
ٌ
د
"ذاول
ٌ
.دور اوظف
ا اذ:وٌ ل ام
:ا فارصا مادا روط ل وا
و لوا جرٌ ٌدل اول ال اق ادا اذي ا ا اصر اذي ٌرت" اٌن "اوٌرت
( first in first out)
فو يذاو رٌا ٌا م اصر واذف"ر ٌ"و ار ان
ٌ
وف
واذي
اول
اصر
م
ٌ
"ور
."
-
8/18/2019 Data struct with c++.pdf
11/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
:ـ ظ***
front:-فذا ٌ ٌ .و روت وو اصر اول اذي م rear :-ٌ ا ٌ اٌر اذي م ا وم رٌر وو اصر .و
:ـ ٌو ثد ا تٌا ٌٌا و وٌا ثد ا ا**
و
ٌ
ٌ
د
و
وصا
دث
ا
اذف
ٌ
و
** " + روت رٌر " و نٌٌد + وص ن وٌا .وون
//abdo.solh
#include
#include
int size=10;
struct queue
{
int rear;
int front;
int ele[10];
}q;//********************************
void initli( queue*q)
{
q->front=0; //front =Null;
q->rear=-1; //rear=1;
}//*****************************
int insert ( queue*q,int e )
{if((q->rear)>size)
coutrear+1;
q->ele[q->rear]=e;
}
}//****************************
int delet( queue *q)
{
if(q->rear < q->front)
{coutfront++];
}//**********************************
void display( queue *q)
{for(int i=q->front;irear;i++)
cout
-
8/18/2019 Data struct with c++.pdf
12/58
-
8/18/2019 Data struct with c++.pdf
13/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
3
{cout
-
8/18/2019 Data struct with c++.pdf
14/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
4
};
int main(){
queue a;int data[5]={32,23,45,99,24};
cout
-
8/18/2019 Data struct with c++.pdf
15/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
5
{
if((q->rear)>size)
coutrear+1;q->x[q->rear]=e;}
}//*********************************
int delet(struct queue *q){
if(q->rear < q->front){coutfront++];
}//**********************************
void display(struct queue *q){for(int i=q->front;irear;i++)
cout
-
8/18/2019 Data struct with c++.pdf
16/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
6
case 2: cout
-
8/18/2019 Data struct with c++.pdf
17/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
7
}
}
int main ()
{
initial ();
cout
-
8/18/2019 Data struct with c++.pdf
18/58
-
8/18/2019 Data struct with c++.pdf
19/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
9
//********************************************** :Linked lists
[1] دLinked List
(1.1) Linked list(1.2)أLinked list
Single Linked List [2]
(2.1) ا ٌصاSingle Linked List(2.2) تٌا :Single linked listض
1 ص – 2 – ا ضر
3 – ا لوأ رص 4 صر ن د –
5 –
ا
صر
ن
6ث – ا رص بٌر
7 – ا رص دد داد8 – ا ن رص فذ
9 –ا تٌزراوSingle Linked List
خ
ٍ
صا
Linked lists
-
8/18/2019 Data struct with c++.pdf
20/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
21
خ اىسفٍ
صا
خ اىٍ
صاسج
-
8/18/2019 Data struct with c++.pdf
21/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
2
Double Linked List [3]
(3.1) ا ٌصاDouble Linked List(3.2)
ٌ
ل
ٌ
و
Single linked list
Double Linked List
وٌس دة أزاء وذك ن رات اووع را زٌٌن ٌ عوو حرط فآ ٌا طدا
ٌ
وٌصب أوت دة ٌ ٌ.راٌب ىرا تٌزراوا اطرٌق م ض ٌك ٌل ن ء ذا ت ذا اووع وف
اٌت ارٌب اStackQueueل بأ فو ا رٌغو.
[1] دLinked List
(1.1) Linked list كا يأ .ما ةدود رٌغو اٌت رط اض دٌد رة ن ن صر
ج ا د دارا تٌا .ر دد
(1.2)أLinked listو ادٌد ن راك ورك توصا تدا كأ ددود و ج وص فر
وصا..!! وصا
م
ن
د
ٌ
ز
ٌ
ت
ٌ
ا
ن
دد
ف
ٌ
ٌ
أن
را
دم
اج
أو
ات
و
ذا
ون
خ اىسفٍ
صا
اىظ
-
8/18/2019 Data struct with c++.pdf
22/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
22
اظك رف دث
ٌ .ذا وف ن أن ل ا دام اصوت ل اإرات خ اصو ا صواطر ٌأك دا ق ن دد اصر ل وزات دود و ن ذه دٌدة ذات م أر
وصازٌد ا و ات ذك .
)ن linked list ون داك ٌو ك تٌا ٌزٌل ك م ذه ا ودل وف م
ٌم اك( اذارة ( ٌت اٌت اد ط ول ج ل ر دد ٌر آر ن ٌ ٌاض أ صوlinked listم( وذا ٌطق ٌٌد.
:ل
ٌ
صو
د
ا
رح
م
ٌ
وف
1 ))ا رص -:آ :د صر
ارٌب ٌت : وأ طاو ةراذا دٌد رٌب : ذا ن ك صر آر ئ ٌnewبٌرا ود وان ذك
. اصر اnextاإر
د إر ا رص رآ ا رصا ن اذ : nextٌNULL
2-ا رص ضر-: ٌا .ٌم ط و رص ل رورا مو نأ و ا رص ضر مو فو نا
: أ ا رص رآ و ل رصا ن ق : وأ.
ٌ
ا
رض
ر
ٌ
ا
اصر
س
ٌ
اصر
ن
ذا
:
ٌ
د
اذي
اصر
ورك
ت
.اٌر وف : ذا ن اصر و اصر .
3-ا رص دد داد: دادا ٌا ٌزٌد دار واد. م أي رف داد ون م ٌداد آرى :ل أي
أ ا رص رآ و ل رصا ن ق : وأ.زٌد اداد دار واد اٌر ٌس اصر : ذا ن اصر ٌ.
اٌر وف : ذا ن اصر و اصر .
4-
ا
صر
ن
ث
: ٌا ا ٌوم اث ن صر ن صر ا و م : ذه
: ق ن اصر ل و وأ أ ا رص رآ.ٌت اث ٌت اصر و اٌر ق ن ٌس اصر : ذا ن اصر ٌ
وف ٌت اث ط رصا تٌ : ذا ن ا رص كر ٌت اث ط رٌغ ٌت اصر : ذا ن ار.
اذ : و رٌا .ن اصر و اصر
:-ضفة في ول اق م-5
ٌا ٌون اصر اول. وذه دٌد أول ا أي أن رٌد صر :ان
ٌ
و
د
ٌ
د
)صر
(ب
ٌ
ر
ء
وم
:وأ
.
-
8/18/2019 Data struct with c++.pdf
23/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
23
ا رص لوأ بٌرا : م رط ٌدا ارٌب : د إر ا وان .
Linked list
Linked list: is a data structure wherein each element
contains both a data value and a pointer to nextelement in the list.
ـا تازٌ :linked listض ٌ
اذار
اصر
ب
ٌ
ر
واوم
ت
وو
ة
اٌت اد اصوت ا دد دد ج ر دد ـ ـا قطٌ اٌت ا وف د(دد م اصو )ذاك
linked list.ٌٌٌدا اصوت ت وو ةراذا رصا بٌر ٌم ٌف ٌول اض واٌد
(ٌٌاذي دة(. ٌوم ظ و اصر اذي اواب و أن ل صر
:
ٌ
رى
أر
ٌ
وو
-
8/18/2019 Data struct with c++.pdf
24/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
24
وف دل اد: أنـ ـ ا ٌصا ذه
linked list-:
struct nodeptr
{
char info;
struct node*next;
}; This is the pointer to the
شر
اىشاثظ
اٌت اـــ :linked listوف دأ أن ؤم وأء ٌ :nodeــــا لاد وnodeمرا50:
:ٌا ٌزراوا ٌم ذاك ن ل
Initial(node*f)
{
f=getnode( );
f->link=null;
f->info=50;
};
اى ثئّب َْب اىَبه اىزبىخ: nodeا
new node ٌإّب يf اىَؤش
اى fث اع ثّخ أشnullث إبح خ
َ
بىا شْ اى 50ثئبه nodeاو
اىَؤش fاىز ش إىب
f
50
-
8/18/2019 Data struct with c++.pdf
25/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
25
ٌ
ـا طر ٌ :node:ا لوأ
دٌدة وو و اnodeورٌد رطnodeد ٌذه اـ
5
f
Insert_B(node*f)
{
node*c;
c=getnode( );
c->info=40;
c->link=f;
f=c;
}
ب
ّ
إnew node ٌ
ؤش
َ
ىاي
اى ثبى nodeثشثظ ّْب أ زىاnode
اىبَخ ىاfirst
اىَؤش ثْو fىا ىإnodeببْث زىااىبnodeثبىبَخ اىز أجسذ أه
ا نو:ٌ
5
f
7
c
-
8/18/2019 Data struct with c++.pdf
26/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
26
طر ٌ :node:)ر سٌو وؤ سٌ ( ا طو
ر نو بطا دا تٌ ٌد 36:ٌ لا نوٌ ورٌد ن ا ب ارم ا رم اطب
Insert_l(node*f)
{
node*c,*p;
c=getnode( );
c->info=30;
p=f;while(c->info > f->info && c->info > p->info)
p=p->link;
c->link=p->link;
p->link=c;
}
ب
ّ
إ
new node
ؤش
َ
ىا ٌc
اىجبّبد او nodeاى
ؤش
َ
ىا ث pىا node ىا fاىز ش إىب
ز زشؤَىا ازبث وْزىاpهس بٍَ
اىبَخ
بب
ُ
( طبىَب :ىبزىبث شىا اc->info >f->infoىا دبٍ
ي
ٍ
)nodeش زىااىَؤش بد اىcإىب
ٍ
ي
ٍ
اىَؤnodeامجش )&&) fىز ش إىب
(c->info>p->linked->infoىا دبٍ
ي
ٍ
)nodeشؤَىا cاىز ش إىب
بد اىٍ
ي
ٍ
(node ىا بد ٍ
ي
ٍ
ثبىبَخ( امجش اىز شnodeاىَشا ثب اىَؤش إىب اع
ر ث بْزث wile:ىبزىبث شىا ا طجبثبى nodeثظ اع اى ثش اىز ش إىبnodeاىَشا ثب pاع اى
ؤش
َ
ىا ثْو اع pىا nodeش بم زىااى ىإ بىإnodeىا(بث ر زىاc)
ؤش
َ
ىا ثْو pىا nodeىا ىإ بىإ ش زىاnodeزىاريب
-
8/18/2019 Data struct with c++.pdf
27/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
27
ا نو حار اذ دذا ال:
30
p
35
40 20
f
36
c
-
8/18/2019 Data struct with c++.pdf
28/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
28
ارر ٌ :nodeا ر::ا هذ ٌد
3
3
4
2
f
ا ٌأر اnode:ورٌد أن رط اــ
Insert_l(node*f)
{
node*c;
c=getnode( );
c->info=70;
l=f;while(l->link !=NULL)
l=l->link;
l->link=c;
c->link=NULL;
}
7
cبإخ
َ
بىا
ب
ّ
إnew node ٌ
ؤش
َ
ىاي
اىجبّبد او nodeاى
ؤش
َ
ىا ث lشؤَىا اىزْو fش ز ز لىا
اىَؤش ازبثlعب ى بر اىبَخ اىل إى أش ْش ىا ّو ر ْش fاىبَخ أا نبّخ أه
. ب لىا بيَمث اىبَخ ّ ئّْب ف اىبَخ
اى lطبىَب اع ح
ٍ
اىَؤش ثْو f ىا node
اى
ىإ
يب
ش
زىا
nodeزىا
( اىبَخ إ و إى أش ىإ بيرnodeز ش إى أش
ْرسق اى شاىبَخ(
ّnodeب أشnullث nodeثشثظ اع اىاى اع إ ث َْأش اىبَخ c ث nodeرشرجظ
شأ
اىب lثشثظ اع اى ث اىز يذ إى أش nodeبّْ أ زىا
-
8/18/2019 Data struct with c++.pdf
29/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
29
-
8/18/2019 Data struct with c++.pdf
30/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
31
********************************************************************************************
:صا ا ٌد رص مو اد
Node* AddItemFront(int x, Node *L){
Node *P;
P = new(Node);P -> Data = x;P -> Next = L;
L = P;return L;
}
-
8/18/2019 Data struct with c++.pdf
31/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
3
Node* AddItemRear(int x, Node *L)
{
Node *P, *Q;
if (L = = NULL)
{
Q = new(Node);
Q -> Data = x;
Q -> Next = NULL;
L = Q;
}
else
{P = L;
while (P->Next != NULL)
{
P = P -> Next;
}
Q = new(Node);
Q -> Data = x;
Q -> Next = NULL;
P -> Next = Q; }
return L;
}
رص مو ادٌ:صا ا
-
8/18/2019 Data struct with c++.pdf
32/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
32
:صا
ا
دال
صر
أي
ن
ث
وم
اد
:صا ا لاد رص يأ فذ مو اد
bool SearchItem(int x, Node *L){
Node *P = L;if (P == NULL)
return false;else if (P -> Data == x)
return true;else
return SearchItem(x, P -> Next);}
Node* DeleteItem(int x, Node *L)
{
Node *P = L, *Q;
if (P -> Data == x)
{
L = L ->Next;delete P;
}
else
{
while ((P->Next)->Data != x)
P = P -> Next;
Q = P -> Next;
P -> Next = Q -> Next;
delete Q;
}
return L;
-
8/18/2019 Data struct with c++.pdf
33/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
33
:صا ا رص ب مو اد
:ا زرا ٌرط دا وم رز ا اص دام
Node* InvertList(Node *L)
{
Node *P = L;
Node *Q = NULL;
Node *R;
while (P != NULL){
R = new(Node);
R -> Data = P->Data ;
R -> Next = Q;
Q = R;
P = P->Next;
}
return Q;
}
Node* SortList(Node *L){
Node *P;int np;
int temp;do
{
np = 0;P = L;
while (P->Next != NULL){
if (P->Data > (P->Next)->Data){
temp = P->Data;P->Data = (P->Next)->Data;
(P->Next)->Data = temp;np++;
}P = P->Next;
}} while (np > 0);
return L;}
-
8/18/2019 Data struct with c++.pdf
34/58
-
8/18/2019 Data struct with c++.pdf
35/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
35
:(Doubly-linked lists)نٌا اوام اص ذات
:(Doubly-linked lists) ام
ال
عد تريف ا مة بد من اعن عن م شر اى اول
اق مة وم شر حو اخر ا مة مثل:
//****************************او ا ٌاد رص موٌ ر ن
ا
صر
ورض
ا
ٌ
صر
ا
ر
ٌ
ا
ن
ا
صر
ورض
ر
ٌ
ا
ا
اول وذف أي صر ن ا:اول
#include using namespace std;struct Node
{
struct Node
{
Node *Prev;
int D ata;
Node *N ext;
}
struct Dbl_list
{
Node *F irst;
Node *L ast;
}
-
8/18/2019 Data struct with c++.pdf
36/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
36
Node *Prev;
int Data;Node *Next;};
struct Dbl_List{Node *First;Node *Last;};Dbl_List AddFront(int x, Dbl_List L){
Node *P ;if (L.First == NULL){P = new(Node);P->Prev = NULL;P->Data = x;
P->Next = NULL;L.First = P;L.Last = P;}
else {
P = new(Node);P->Prev = NULL;P->Data = x;P->Next = L.First;L.First->Prev = P;L.First = P;}
return L;
-
8/18/2019 Data struct with c++.pdf
37/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
37
}
Dbl_List AddRear(int x, Dbl_List L){Node *P ;
if (L.First == NULL){P = new(Node);P->Prev = NULL;P->Data = x;P->Next = NULL;L.First = P;
L.Last = P;}else {P = new(Node);P->Prev = L.Last;
P->Data = x;P->Next = NULL;L.Last->Next = P;L.Last = P;
}return L;
}void ShowListFarward(Dbl_List L){Node * P = L.First;while (P != NULL){cout
-
8/18/2019 Data struct with c++.pdf
38/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
38
}
coutNext = NULL;
delete P;
-
8/18/2019 Data struct with c++.pdf
39/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
39
}
else {P = L.First;
while((P != NULL)&&(P->Data != x))P = P -> Next;if (P == NULL)coutNext)->Prev = P->Prev;delete P;}}}return L;
}main(){Dbl_List L;
L.First = NULL;L.Last = NULL;
L = AddFront(26,L);L = AddFront(16,L);L = AddRear(36,L);L = DeleteItem(26,L);ShowListFarward(L);}
-
8/18/2019 Data struct with c++.pdf
40/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
41
م
صرة
اواد
ون
ت
واد
و
ٌ
او
اك
ر
ذا
اٌل ء: ون ء ٌاواد ب #include
//******************************* const int size=5;
//******************************* struct stack
{int top;int item[size];
int rear;int front;
stack *First;stack *Last;
stack *Prev;
int Data;stack *Next;
}ps;//*****************************
/*struct Dbl_List {
Node *First; Node *Last;
}; //*****************************
struct Node {Node *Prev;
int Data; Node *Next;
};*/ //*****************************
void initial(struct stack *ps)
{ps->top=-1;
ps->front=0; //front =Null; ps->rear=-1;
}//******************************
void push(struct stack *ps,int m){if(ps->toptop)++;ps->item[ps->top]=m;}
else cout
-
8/18/2019 Data struct with c++.pdf
41/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
4
//********************************
int insert ( stack*ps,int e )
{if((ps->rear)>size)
coutrear+1;ps->item[ps->rear]=e;
}}//****************************
void pop(struct stack *ps){if(ps->top>(-1))
{couttop]front;irear;i++)cout
-
8/18/2019 Data struct with c++.pdf
42/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
42
P->Prev = NULL;
P->Data = x;
P->Next = NULL;L.First = P;
L.Last = P;}
else {
P = new(stack);P->Prev = NULL;
P->Data = x;P->Next = L.First;
L.First->Prev = P;L.First = P;
}return L;
}
//********************************** stack AddRear(int x, stack L)
{stack *P ;
if (L.First == NULL){
P = new(stack);P->Prev = NULL;
P->Data = x;P->Next = NULL;
L.First = P;L.Last = P;
}
else {
P = new(stack);P->Prev = L.Last;
P->Data = x;P->Next = NULL;
L.Last->Next = P;L.Last = P;
}return L;
}//**********************************
void ShowListFarward(stack L)
{
-
8/18/2019 Data struct with c++.pdf
43/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
43
stack * P = L.First;
while (P != NULL)
{cout Next;
-
8/18/2019 Data struct with c++.pdf
44/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
44
if (P == NULL)
coutNext)->Prev = P->Prev;
delete P;}
}}
return L;}
/*********************************** int SearchItem(int x, stack *L)
{cin>>x; stack *P = L;
if (P == NULL)
return false; else
if (P -> Data == x) return true;
else return SearchItem(x, P -> Next);
} */
//************************************
اىْبش ثيت ر اىخ// اىَيخ بثخ ٍ
ىَو اىجة stack* InvertList(stack *L)
{
stack *P = L;stack *Q = NULL;
stack *R;while (P != NULL)
{R = new(stack);
R -> Data = P->Data ;R -> Next = Q;
Q = R;P = P->Next;
}return Q;
}//************************************
int main()
-
8/18/2019 Data struct with c++.pdf
45/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
45
{
stack L;
L.First = NULL;L.Last = NULL;
int n, op, x;;initial(&ps);
do{cout>op;
switch(op){case 1:;
{cin>>n;push(&ps,n);
}
break;case 2:
pop(&ps);break;
case 3:coutn;insert(&ps,n);
break;case 4:
cout
-
8/18/2019 Data struct with c++.pdf
46/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
46
cout>x; I//nvertList(stack);
break;*/
default:cout
-
8/18/2019 Data struct with c++.pdf
47/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
47
}
dnode*creatnode()
{return((dnode*)malloc(sizeof(dnode)));
}//*********************************
void addbeg(dnode*&f,dnode*n){
if(f==NULL){
n->rlink=f;n->llink=NULL;
f=n;}
else {
n->rlink=f;
n->llink=NULL;f->llink=n;
f=n;}
}void addend(dnode*f,dnode*n)
{dnode*p=NULL;
p=f;while(p->rlink!=NULL)
p=p->rlink;n->llink=p;
n->rlink=NULL;
p->rlink=n;}
void addaft(dnode*f,dnode*n,int e){
dnode*p=NULL;p=f;
while(p!=NULL&& p->data!=e)p=p->rlink;
if(p==NULL)coutrlink=p->rlink;
-
8/18/2019 Data struct with c++.pdf
48/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
48
p->rlink->llink=n;
p->rlink=n;
}}
void visilist(dnode*f){
dnode*p=NULL;p=f;
if(p==NULL)coutrlink;
if(p==NULL)cout
-
8/18/2019 Data struct with c++.pdf
49/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
49
n->llink=p->llink;
n->rlink=p;
p->llink->rlink=n;p->llink=n;
}}
void dbeg(dnode*&f){
dnode*d=NULL;d=f;
f=f->rlink;f->llink=NULL;
free(d);}
void dend(dnode*f){
dnode*p=NULL;
p=f;while(p->rlink!=NULL)
p=p->rlink;p->llink->rlink=NULL;
free(p);}
void dmid(dnode*f,int e){
dnode*d=NULL;d=f;
while(d->data!=e&& d->rlink!=NULL)d=d->rlink;
if( d->rlink==NULL)
coutrlink=d->rlink;d->rlink->llink=d->llink;
free(d);}
}void danywhere(dnode*&f,int key)
{dnode*d=NULL;
dnode*pf=NULL;
dnode*p=NULL;
-
8/18/2019 Data struct with c++.pdf
50/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
51
p=f;
d=f;
pf=f;int found=0;
while(d!=NULL&&!found){
if(d->data==key)found=1;
else {
p=f;d=d->rlink;
}}
if(!found&&d==NULL)coutllink=NULL;free(d);
}else
{d->llink->rlink=d->rlink;
d->rlink->llink=d->llink;free(d);
}
}}
main(){
//clrscr(); dnode*f=intl();
dnode*n=NULL;int x;
int op;
do {
cout
-
8/18/2019 Data struct with c++.pdf
51/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
5
7 to delete from begin \n 8 to delete from end\n 9 to delete from
mid list \n 10 to delete any where \n 11 to show list from last
\n";cin>>op;
switch(op){
case 1:n=creatnode();
coutn->data;
addbeg(f,n);break;
case 2:n=creatnode();
coutn->data;
addend(f,n);
break;case 3:
n=creatnode();coutn->data;coutx;addaft(f,n,x);
break;case 4:
visilist(f);break;
case 6:
int y;n=creatnode();
coutn->data;
couty;
addbef(f,n,y);break;
case 7:dbeg(f);
break;case 8:
dend(f);
break;
-
8/18/2019 Data struct with c++.pdf
52/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
52
case 9:
int z;
coutz;
dmid(f,z);break;
case 10:int t;
coutt;
danywhere(f,t);break;
case 11:revlist(f);
break;}
}while(op!=5);
}
//***************************************
وم
ٌ
و وا ٌول أي رم ٌادا ا ٌ ٌوم ر ٌاو ٌادا ٌا د أي رم واذف ن وٌوم رض
اداد
وع
د
ٌ
او
ا
م
ٌ
و
اصر
ب
ٌ
رو
واوط
:ٌدراو ٌوزا #include //using namespace std; #include
#include struct sll{int data;
struct sll*llink;};sll*f;
sll*creatnode(){return((sll*)malloc(sizeof(sll)));}
sll*intl(){f=NULL;return f;}
void addbeg(sll*&f,sll*n){
-
8/18/2019 Data struct with c++.pdf
53/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
53
n->llink=f;f=n;}void addend(sll*f,sll*n)
{sll*p=NULL;p=f;
while(p->llink!=NULL)
p=p->llink;p->llink=n;n->llink=NULL;
}void addaft(sll*f,sll*n,int e){sll*p=NULL;p=f;while(p->data!=e&&p!=NULL)p=p->llink;if(p!=NULL){
n->llink=p->llink;p->llink=n;
}else coutllink;}if(p!=NULL){
n->llink=p;old->llink=n;}else
cout
-
8/18/2019 Data struct with c++.pdf
54/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
54
sll*d=NULL;d=f;f=f->llink;free(d);
}void dend(sll*f){
sll*p=NULL;
sll*d=NULL;p=f;while(p->llink!=NULL)
{d=p;p=p->llink;}d->llink=NULL;}void dlend(sll*f){
sll*d;
sll*p;d=f;
p=f;while(p->llink!=NULL){
d=p;
p=p->llink;}d->llink=NULL;free(p);
}
void dmid(sll*f,int key){
sll*p=NULL;sll*d=NULL;p=f;while(p->llink->data!=key&&p!=NULL)
p=p->llink;d=p->llink;if(p!=NULL)p->llink=d->llink;else coutllink=f;f=n;
}else {if(f==NULL)
{
-
8/18/2019 Data struct with c++.pdf
55/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
55
n->llink=f;f=n;}else
{p=f;while(p->llink!=NULL)
p=p->llink;
n->llink=NULL;p->llink=n;p=n;
}}}//******************************** void div_list(sll*f,int e){sll*p=NULL;sll*p2=NULL;sll*f2=NULL;
p=f;while(p->data!=e)
p=p->llink;f2=p->llink;p2=p->llink;p->llink=NULL;
coutllink;}
cout
-
8/18/2019 Data struct with c++.pdf
56/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
56
coutop;switch(op){case 1:
n=creatnode();coutn->data;addbeg(f,n);break;case 2:
n=creatnode();coutn->data;coutx;
addaft(f,n,x);break;case 3:n=creatnode();
coutn->data;addend(f,n);break;
case 4:
-
8/18/2019 Data struct with c++.pdf
57/58
: ىش َس ي-ا اىبىت جا خ
ٍ
بب
ٍ
ي
َ
ىا رنْىب /ميخ اىسبة ْب
57
coutdata;odev(f,n);break;
case 11:
int e;coute;div_list(f,e);break;case 12:
findsum(f);break;case 13:rev_list(f);break;case 14: dlend(f);break;
}}while(op!=5);}
-
8/18/2019 Data struct with c++.pdf
58/58
ص د ٌٌ : د ارن اداد اطبءص
وا
ٌ
ووو
اوب
ٌ
ىوتو مظ م(Information System)
ام
ووردا
اوا
ض
ن
دة
ن
واغب ن رة
د/ ل وي ـ ـ ـ ـ ـ ـ ـ /
أ/ روة ادي
ن ارع وتان واطؤأ وود
ورا دٌرا لصاو
[email protected]اٌس وك وا
http://www.facebook.com/hnoon2015ص ٌ د ارن
mailto:[email protected]://www.facebook.com/hnoon2015http://www.facebook.com/hnoon2015http://www.facebook.com/hnoon2015mailto:[email protected]:[email protected]