1
2
3
4
سا
ا 5
تا آه إ 6
تا آه ا 8
تا آه عاأ 8
سا)Stack( 8
اا ً)Queues( 15
تا 20
ااList)( 35
راTrees 52
ردا 67
ا 68
5
)
( )
(
.
,
.
.
.
.
6
ا آه إ ت
عوا فا إ ء ةاا ا ه و ا
ا ةو ا ا ه ث نأ ا تاو
ةا إو ا .
ا ءا و تا ه ا ا آ هDATA
تا وINFORMATION ا سأ ه .
؟ هد نأ آو تا ه و تا ه
ت/ وأ ا ه ُ وأ ُار وأ مرأ وأ فو ن را.
تاو/ ا راو ء .
نذإ ةدا ه ت ن اا و تا ه تا نأ وأ ت ما
ا ه ا قا.
• تا ا عاأ
1. ا.
2. فاوأ ءا .
3. ا .
4. زا.
5. ا تا ما آاو ا +),*,-, (/ ا تاو =), !=
,< ,>, <= ,>=. (
6. وا ا)SAVE(.
7. او ا.
8. او او عا.
ما ُوأ ت لا ت نذإ تا ه
.
• ت ا آاو ا آا
ا نأ ت مزا ا ا إ أ ا ة ًاآ
وهأ:-
د اا ةآاا.
و د ا جااو لدا تا.
د اا ةآاا جااو لدا ) ه تا لد
يأ تاا.
إ ل ا او دو لوا ا نأ
لدا تاا هر تا ,ه ياو ةآاا ا لا
ت او ا آا إ ةرا او جااو لدا تاوو ا
ر ا
ا آا / هو ا ا يأ ا ت اه ن
ا اه .
ا آا / ا ا ا طوأ تا آ هو
يأ وأ ة ا صا تا ن ا صاو
.
و تا آه ا تا و تا آا/ ةرت تزراو
ا
7
و و ةآاا ا لا و ا م م و م
ا زراا إو تا ه .
و/ تا ص و ا ه ا ا ا ةآ ه تا
ةآاا ً ًهو ً ا تا
ًوُاد َ يد او او.
• تا آه ا
فا و تا ز اإ و اةآاا .
او ءا و ا ء.
ا عاأا اا آ ة ق .
ةآاا تا عاو ا ز را.
• عاأتا آه
آ ت آه)STATIC INFORMATION.(
ي ا و تاو لوااو تآه تا
ا دا ق
ت آهد يإ ة آ
عا اه وإ
(1 ة ت آه/ ا هو
تا.
اا.
اا.
تا.
تا.
تا.
(2 ت آهيإ ةآاا ا / را , اا
و ه تا ا ا آ ً اا
8
سا ُوأ)Stack(
سا / و اإو تا ص جذ ةر ه
او اأ جرا وأ اا تا قو ةر وأ جرا اأ ا
LIFO (LAST INPUT FIRST OUTPUT)
ةا او ء أ ج وا ا سا أ لآو
ًوأ ج ن او ا افاو او و top.
ةءااوأ ا يإ او ف top.
• سا ا و
دإ ا ا
اا ءا ت م
زو ا او ضاا ت
ا اا ءا
ولا ا نأ ي سا إ او TOP
ن ُر سا ن TOP=-1 و لدإ لوأ
++ TOP نأ إ او را ا ن دأ آو
سا .
وجاأ سا ا او را ا أ إ نأ ا =-1
وأ NULLاآُر سا ن .
• و سا ق و ةآاا :
سا ا اا ايإ .
صاا ا)COMPACT ( ةآاا يإ دأ.
لآو ت سا إ ا ا
9
ضونأ 4 ) (داو أ )X (اذإو درأ جاإ سا ن
أ هو د (x) ا ا آ
و اهلوأ م سا اد لدإ 1)
#include<iostream.h>
#include<conio.h>
int size=10;
int a[10],top=-1;
int pop();
void push(int[],int);
main(){int i,k;clrscr();
for(i=0;i<size;i++){cin>>k;push(a,k);}
for(i=0;i<size;i++)cout<<pop()<<" ";
getch();}
void push(int a[],int k){
if(top==sise-1)cout<<" FULL STACK";
else
a[++top]=k;
}
int pop(){
if(top<0)cout<<"EMPTE STACK";
else
return a[top ];
}
Top و م هو سا ذ
و إ لا لاوا
سا تا جاأ اد
ن سا نأ
يأ ا top =
ا -1
إو و ا ا
ا ا ا ا ا
ن يا
top
ًر أ سا نأ
ا نtop = -1 ا يأ
ا
ا اد ا ج إو
نا اtop حو
ا ا .
TOP ,PUSH,POP STACK
ا ه آ و تا ءأ ةر
لاود ءا ا يروا.
هو سا تا لدإ اد
ارأ ع و ع
10
ا لا ولاو ا إأ سا ا اه
اSTACK ا و إ ء او أ هو إ هآذ ا
ً.
لآوأ اد ا ن س آا جا م جاأ pop
2) #include<iostream.h>
#include<conio.h>
int size=10;
int a[10],top=-1;
int pop();
void push(int[],int);
main(){clrscr();int i,k;
for(i=0;i<size;i++){cin>>k;push(a,k);}
cout<<"THE MAX VAL = "<<pop();
getch();}
void push(int a[],int k){
if(top==size-1)cout<<" FULL STACK";
else
a[++top]=k;
}
int pop(){int i,max=a[top ];
for (;;)
{if(top<0)break;
else
if(max<a[top])max=a[top];top ;}
return max;
}
انأ و و او لا يإ ه فا نإ با نآ ا ا
ااا و اه ا د سا ا و ا اد ا با ا
ز آا
for(;;) أ ا ط BREAK.
سا ت وأ ساا Prefix and Postfix درو ماا نو
سا.
3)
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
void check(char[]);
main(){clrscr();char s[100];
cin>>s;check(s);
getch();}
void check(char s[]){char c;int i,x,y;x=y=0;
for (i=0;(c=s[i])!='\0';i++){
if(c=='('||c=='[')x++;
else
ن با top <0
نر إو max نأ إ اهو
Max آا
ا ة
ا س ه(
قا س و)
س آو
ا آ
اذ ا با نرو
س آا قا س نآ
م ر ا
ا و
ا أ نر ا و اذ
ا آا ا ىإ نآ
ل إو ءا
ا
11
if(c==')'||c==']')y++;
if(y>x){cout<<"ERROR\n";exit(1);}
}
if(y>x||x>y){cout<<"ERROR\n";exit(1);}
cout<<"ACCEPT \n";
}
ا اهو ا إ أ تا او سا ا يإتا ح و
ُ تا.
4)
#include<iostream.h>
#include<conio.h>
#include<string.h>
#define size 10
struct stack
{int top;
char a[size];}s;
void push(struct stack*);
void pop(struct stack*);
int full(struct stack*);
int empty(struct stack*);
void main()
{clrscr();
s.top=-1;int i;
char x[size];
cout<<"enter your string"<<endl;
cin>>x;
for (i=0;x[i]!='\0';i++)
{ if (x[i]=='(')
{
if (!full(&s))
push(&s);
}
else if(x[i]==')')
{
if (!empty(&s))
pop(&s);
else s.top ;
}
}
if (empty(&s))
cout<<"true";
else
12
cout<<"false";
getch();}
void push(struct stack *s)
{s->top++;
s->a[s->top]='(';}
void pop(struct stack *s)
{s->a[s->top ]=')';}
int full(struct stack *s)
{if (s->top==size-1)
return 1;
else
return 0;}
int empty(struct stack *s)
{if (s->top==-1)
return 1;
else
return 0;}
إ نأ ا هذ او سا ة ,نأ اذإ نإ ت إ سا
آو ُ ن ذ سا و إ ا م ل و سا
ُ ا اا
ه هأ و لو ةا
ونأ ةا إ نذإ ا ا و ءو
5)
#include<iostream.h>
#include<conio.h>
int size=10;
int a[10],top=-1;
int pop();
void r(int[]);
void push(int[],int);
main(){clrscr();int i,k;
for(i=0;i<size;i++){cin>>k;push(a,k);}
r(a);
for(i=0;i<size;i++)cout<<pop()<<" ";
getch();}
void push(int a[],int k){
if(top==size-1)cout<<" FULL STACK";
else
a[++top]=k;
}
int pop(){return a[top ];}
13
void r(int a[]){int x[10],y[10],top2=-1,top3=-1;
while(top>=0)x[++top2]=a[top ];
while(top2>=0)y[++top3]=x[top2 ];
while(top3>=0)a[++top]=y[top3 ];}
آ ا ماا ه تا تا
سالوا إسا ا س ا و ا تا ن تا
إ سا ا سا و ا .
ا اه او ل آا ساا ءا ا
6)
#include<iostream.h>
#include<conio.h>
int size=10;
int a[10],top=-1;
int pop();
void push(int[],int);
main(){clrscr();int i,k;
for(i=0;i<size;i++){cin>>k;push(a,k);}
cout<<pop();
getch();}
void push(int a[],int k){
if(top==size-1)cout<<" FULL STACK";
else
a[++top]=k;
}
int pop(){static int max=a[top ];
if(top<0)return max;
else
{if(max<a[top])max=a[top];top ;pop();}
}
ف دا اهويإ؟ سا
7)
#include<iostream.h>
#include<conio.h>
int size=10;
int a[10],top=-1;
int pop();
void del_pop(int[],int);
void push(int[],int);
main(){clrscr();int i,k;
for(i=0;i<size;i++){cin>>k;push(a,k);}
cout<<"ENTER NUMBER DELETING\n";
cin>>i;del_pop(a,i);
getch();}
ا ه ا اه و
ج نأ ما ةآاا
ا و ت تاا ن ةآاا
14
void push(int a[],int k){
if(top==size-1)cout<<" FULL STACK";
else
a[++top]=k;
}
void del_pop(int a[],int i){int top2=-1,m[10];
while(top>=0){if(i!=a[top])m[++top2]=a[top];top ;}
while(top2>=0)cout<<m[top2 ]<<" ";}
…………….
إ ا ن ه ئرا عا ضو ا إ حا اه او كاود يا
ً هنأ يإ ناو و برا ئرا و را و ن .
(* جا م آاداا سا ةرا يإ ف داا؟ ةرا
(*؟ س م آا
(* م آاازإ لو دا ازا؟ما ا
(* ا تا و م آا), دا ,ح ( ؟
(* م آاادا س داو س وا أ؟
(* ف م آاداا وا؟ سا
15
اا ً)Queues (وأا ت ر
ةر هو ا تا آه عو قر تا سا
نأ ه اإو تا لد ا ا FIFO (First Input First Output)
يإ اا وأ جرا وأ يإ ن ا فاو ا ما يإ ر
سأا و head or front و ا و tail or rear وا
فا و ا ا سأا ا أ تا ن
ةآا ا و رو يإ أ را ر
لو ه لوأ اد .
ا ر ردا ا وأ ا.
عاأ اا
(1 ر / هو طو دو ا نأ ا يو ا ن .
(2 ياد ر / ا إ نأ ا ءا ط سأا= 1 و
ا= ا أو سأا=ا+1.
أو ث إ ا را :-
ن اا سأا نا او ي و نأ را إ يإ
ن if(tail==-1||head==-1)
ولدإ لوأ اسأ او =0
1
HEAD
TAIL
TAIL
HEAD
16
ولدإ ا ا مأ سأا ه آ
2
1
ا فا ويإ ا ن سأاو او را ف آ
ازإ ف آ ر نإ تدرأ.
ر لوا اهو
8)
#include<iostream.h>
#include<conio.h>
int size=10;
int a[10],tail=-1,head=-1;
نأ را يا ا
أ x ا ن را داز
أو او.
ن را أ و
وا ج د لوأ
ا اه و a . دزو
أو ا سأا
ة يا .
TAIL
را نأ ا
If
(
tail
<
size
-
1
&&
head
==
0
)
ا را نأ ا و
If(tail==size-1&&head==0)
را ن ا و ت
جااو ف
If(tail>0&&head<=tail)
HEAD
17
int p_q();
void add_q(int[],int);
main(){clrscr();int i;
for(i=0;i<size;i++){if(tail==size-1){cout<<" FULL Queue";break;}
add_q(a,i+1);}
while(tail>=head)cout<<p_q()<<" ";
getch();}
void add_q(int a[],int k){
if(tail==-1){head=tail=0;a[tail]=k;}
else
a[++tail]=k;
}
int p_q(){return a[head++];}
أو را ا تا د
(*ا ADD
داو ا ا ا دا ه
(* فاDEL
ا دا اهو
9)
#include<iostream.h>
#include<conio.h>
int size=10;
int a[10],tail=-1,head=-1;
int p_q();
void add_q(int[],int);
void del(int[],int);
main(){clrscr();int i;
for(i=0;i<size;i++){if(tail==size-1){cout<<" FULL Queue";break;}
add_q(a,i+1);}
cout<<"ENTER VAL DELETE\n";cin>>i;
del(a,i);
while(tail>=head)cout<<p_q()<<" ";
getch();}
void add_q(int a[],int k){
if(tail==-1){head=tail=0;a[tail]=k;}
else
a[++tail]=k;
}
int p_q(){return a[head++];}
void del(int a[],int k){int x[10],t2,h2,m=head;t2=h2=-1;
if(tail==-1||head>tail)cout<<"THE QUEUE EMPTE\n";
else
while(m<=tail){
if(a[m]!=k){
18
if(t2==-1){h2=t2=0;x[t2]=a[m];}
else
x[++t2]=a[m];
}m++;}head=tail=-1;
while(t2>=h2){
if(tail==-1){head=tail=0;a[tail]=x[h2];}
else
a[++tail]=x[h2];
h2++; }
}
(* ا
ا ا إ إ وو و ر م
إ نإ و إو إ .
10)
#include<iostream.h>
#include<conio.h>
int size=10;
int a[10],tail=-1,head=-1;
int p_q();
void add_q(int[],int);
void ser(int[],int);
main(){clrscr();int i;
for(i=0;i<size;i++){if(tail==size-1){cout<<" FULL Queue";break;}
add_q(a,i+1);}
cout<<"\nENTER VAL SERCH\n";cin>>i;
ser(a,i);
while(tail>=head)cout<<p_q()<<" ";
getch();}
void add_q(int a[],int k){
if(tail==-1){head=tail=0;a[tail]=k;}
else
a[++tail]=k;
}
int p_q(){return a[head++];}
void ser(int a[],int k){int y=0,t=tail,h=head;
if(t==-1||h>t)cout<<"THE QUEUE EMPTE\n";
else
while(h<=t){
if(a[h]==k){y=1;cout<<"FOUND\n"<<a[h];break;}h++;}
if(y==0)cout<<"NOT FOUND\n"<<k;cout<<endl;}
(* ر د
آذ ئرا و ا ة نأ دا
وأ آا نأ را ا آ ب را لوا
ر ه ا ةا
ا ا لدإو ا ا
داا ا يوا ر
ا
19
ا وا
)ا د ةدا ا- ا د=(>) ا ا د-ا را (
را ذ ا لوا.
(*اا
ا دآ اورا أ را ا نأ ا آأ تو و
ا ء ا ا اهو .
11)
#include<iostream.h>
#include<conio.h>
main(){clrscr();
int x[5],y[5],i,j,k,t=0,tail,taily,head,heady;
tail=taily=head=heady=-1;
cin>>j;tail=head=0;x[tail]=j;
for(i=1;i<5;i++){cin>>j;t=0;
while(head<=tail){heady=0;
if(t==0&&j>=x[head]){y[++taily]=j;t=1;}
y[++taily]=x[head++];}
head=tail=-1;if(t==0)y[++taily]=j;
while(heady<=taily){x[++tail]=y[heady++];head=0;}
heady=taily=-1;
}
for(k=0;k<=tail;k++)cout<<x[k]<<" ";cout<<endl;
getch();}
را ياا:-
آذ ا اا ن فاو ُ هاوأ طا
ُر را نif(head==tail+1).
را نif(tail!=size&&head=1).
را ن if(head==1&&tail==size).
اا س آذ ا اا ورا.
ه إو ئرا نأ ُارد ن ناو را ة ا ن ه را.
اا ر
(*؟ ر م آا
(*؟ ما د ن ر م آا
(* م آا؟ ر وا اا ف
(*آا ر و م ه؟ لو
(*م آا س إ؟ ر //او ا ق //
(* ر صأ و ا هو 1 إ 5 را هو ة ا
ر3 أا و ي ر ا د ر ه
اإ زراو را ًوأ اا ًوأ ا؟
20
• ا آا
ونأ اا دا او راو ا آ د م
تا ,ات تااو.
21
22
23
24
25