السلام عليكم
أنا مشاركه جديده بهذا المنتدى الرائع ...
عندي سؤال في الداتا ستركشر .. و خصوصاً وفي الكيوو ...
طبعاً ++C
اذا بالله حدا يساعدني فيه ..
Part One Use the STL Queue to Write the follwing C++ functions : - 1. FillQ : Randomly fills the queue with 10 integers [1 –20]. 2. Print : Print whole queue items as their input order. 3. Reverse_print : Print the queue elements in reverse order. 4. Count : Count how many odd numbers and how many even at the last queue. 5. Size : An independent function that return the queue size. 6. Split : That split a queue into odd queue and even queue. Part Two: “Build the Queue class” Assemble the appropriate declarations and codes given in the lectures into the files Queue.h and Queue.cpp and verify that the Queue.cpp compiles correctly so that the class Queue can be used by other client programs. Part Three Write the following Functions using the last Queue 7. RemoveItem : This function should remove all occurrences of item from the queue q , and should keep the same order of the queue . example : q(before) is 1 2 4 5 2 5 2 6 2 item=2 è q(after) is 1 4 5 5 6 5. Insert mid: Insert a given value in the middle of the queue, if the size before insertion is odd, assume the upper half to be larger by one. 6. FindIndex ( friend function): print the index in which element X found at.
و هاي محاولتي ... بس ؟؟؟؟؟؟؟؟؟؟؟؟؟؟!!!!!!!!!!!!!
source File
#include<iostream.h>
#include<cstdlib>
#include "Queue.h"
queue ::queue ()
{
count=0;
front=0;
rear=maxsize-1;
}
// Def of My Q.
Err_code queue ::append (q_entry item) // append
{
if (count==maxsize)
return overflow;
if (rear+1==maxsize)
rear=0;
else rear++;
entry [rear]=item;
count++;
return success;
}
Err_code queue ::serve() //serve
{
if (count==0)
return underflow;
front=(front+1)%maxsize;
count--;
return success;
}
Err_code queue ::retrive(q_entry & item) const //retrive
{
if (count==0)
return underflow;
item=entry[front];
return success;
}
bool queue ::empty() const // empty
{
if (count==0)
return true;
return false;
}
// End Of Q Def.
//Def of main Fun
void fillq(queue &q) //Fill Q.
{
q_entry x;
for ( int i=0; i<10; i++)
x=1+ rand ()%19;
q.append(x);
cout<<endl<<endl;
}
void print (queue & q) // print items as their inputs
{
q_entry x;
queue temp , temp2;
temp=q;
while (!temp.empty() )
{
temp.retrive(x);
temp.serve();
temp2.append (x);
}
while(!temp2.empty() )
{
cout<<temp2.retrive(x);
temp2.serve();
}
}
void reversr_print (queue &q) // print reverse .. as normal
{
q_entry x;
q.retrive (x);
cout<<endl<<endl;
}
/*void count ( queue &q ) // count even & odd In Q.
{
q_entry x;
int even_counter=0;
int odd_counter=0;
if (q.retrive(x)%2==0)
even_counter++;
q.serve();
else
odd_counter++;
q.serve();
}
*/
int size (queue &q) // An Independent Fun. To Know The Size Of Q.
{
q_entry x;
int sum=0;
queue temp;
while (!q.empty())
{
q.retrive(x);
q.serve ();
temp.append(x);
sum++;
}
while (!temp.empty())
{
temp.retrive(x);
temp.serve();
q.append(x);
}
return sum;
}
/*void split(queue & q )//, queue & q1 , queue & q2) // fun to split Q To Even & Odd ..
{
q_entry x;
queue q1 , q2;
while (!q.empty())
q.retrive(x);
if (x%2==0)
q1.append(x);
q.serve();
else
q2.append(x);
q.serve();
}
*/
void main ()
{
queue q;
int select;
bool flag=true;
while(flag)
{ cout<<"Welcome To My Program "<<endl<<endl;
cout<<"(1) Append "<<endl;
cout<<"(2) Print "<<endl;
cout<<"select "<<endl<<endl;
cin>>select;
cout<<endl<<endl;
switch (select)
{
case 1 :fillq(q); break;
case 2 :print(q); break;
case 3 :flag=false; break;
}
}
}و ال Header
typedef int q_entry;
enum Err_code {success , overflow , underflow};
const int maxsize=100;
class queue // Begining of My Queue
{
public :
queue ();
Err_code append (q_entry);
Err_code serve ();
Err_code retrive (q_entry & ) const;
bool empty () const;
protected :
int count;
q_entry entry[maxsize];
int front , rear;
};أرجو المساعده ... لأني ما أجيت هون الا و أنا مستنفذه كل الطرق و الوسائل
يعطيكوا العافيه و بالله تردوا بسرعه ...