класс очередь в С++
Заранее Спасибо.
Задание:
Класс «Очередь»
(Размер очереди не ограничен).
Данные.
•Позиция головы очереди;
•Позиция хвоста очереди;
•Текущее количество элементов в очереди.
Операции.
•Конструктор, создающий пустую очередь.
•Вставка элемента в хвост очереди;
•Удаление элемента из головы очереди;
•Возвращение элемента из головы очереди;
•Проверка очереди на пустоту;
•Копирование очереди;
•Возвращение количества элементов в очереди.
Желательно реализовать класс таким образом, чтобы можно было легко изменить тип элементов, хранящихся в компонентах класса. Для этого разработайте шаблон класса.
Цитата:
Originally posted by Sektor
Помогите сделать курсовик по С++.очень надо.Сдавать скоро, если не сдам до экзамена не допустят.:(
Помогите сделать курсовик по С++.очень надо.Сдавать скоро, если не сдам до экзамена не допустят.:(
Халяву ищем?
Назови 5 причин, по которым тебе должны его тут сделать :)
А если я назову 5 причин ты мне программу сделаешь?
Цитата:
Originally posted by Dian
Халяву ищем?
Назови 5 причин, по которым тебе должны его тут сделать :)
Халяву ищем?
Назови 5 причин, по которым тебе должны его тут сделать :)
вообще то в этом разделе такие темы не запрещены.
автору. будьте добры, прочитайте правила постинга и приведите тему в соответствие с ними. как минимум - расскажите ваше видение решения и что уже было сделано вами.
Размеется. Если, конечно, это настоящие причины :)
Даже если не напишу - отправлю первый же попавшийся исходник, удовлетворяющий требованиям :)
squirL
OK. Давайте не будем флудить.
Соображения:
Все, что только можно, уже написано в тексте задания. Вплоть до имен переменных. Если же какие-то темные пятна все же остались - можно посмотреть любую реализацию очереди. По крайней мере С++ без stl мне еще не попадалось
Вот программа, можешь хотя бы проверить ошибки?
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
//---------------------------------------------------------------------------
#pragma argsused
class turn
{private:
struct element
{element *prev;
int info;
element *next;
};
element *head;//указатель на голову очереди
element *tail;//указатель на хвост очереди
int n;//размер очереди
public:
turn();//создание пустой очереди
void insert_tail(int x);//вставка элемента в хвост очереди
void delete_head();//удаление элемента из головы очереди
int value();//возвращение элемента из головы очереди
bool is_empty();//проверка очереди на пустоту
turn(const turn&t);//копирование очереди
int kol();//возвращение количества элементов очереди
};
//реализация
turn::turn()
{head=0;
tail=0;
n=0;
};
//вставка элемента в хвост очереди
void turn::insert_tail(int x)
{element *temp;
temp=new element;
temp->info=x;
temp->next=0;
temp->prev=tail;
//включение элемента в список
if(head==0)
head=tail=temp;
else
{tail->prev=temp; //ХХХХХХХХХХХХЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗ
tail=temp;
}
};
//удаление элемента из головы очереди
void turn::delete_head()
{element *temp;
temp=head;
head=head->next;
delete temp;
};
//возвращение элемента из головы очереди
int turn::value()
{return head->info;
};
//проверка очереди на пустоту
bool turn::is_empty()
{return !head;
};
//копирование очереди
turn::turn(const turn&t)
{element *temp1,*temp2;
head=tail=0;
n=t.n;
temp1=t.head;
while(temp1!=0)
{temp2=new element;
temp2->info=temp1->info;
temp2->next=0;
temp2->prev=tail;
if(head==0)
head=tail=temp2;
else
{tail->next=temp2;
tail=temp2;
}
}
}
//возвращение количества элементов очереди
int turn::kol()
{return n;
}
//вывод очереди
void turn::print()
{turn *p;p=head;
while(p!=0)
{cout<<p->info<<";";
p=p->next
}
}
void main()
{turn q1,q2;
int x,sv;
start:
cout<<"1. Insert in tail."<<endl;
cout<<"2. Delete from head."<<endl;
cout<<"3. Return from head."<<endl;
cout<<"4. Is it empty?"<<endl;
cout<<"5. Copy turn."<<endl;
cout<<"6. Number of elements."<<endl;
cout<<"7. Print 1."<<endl;
cout<<"8. Print 2."<<endl;
cout<<"0. Exit"<<endl;
cin>>sv;
switch(sv)
{case 1:cout<<"Input x:";cin>>x;q1.insert_tail(x);break;
case 2:q1.delete_head();break;
case 3:q1.value();break;
case 4:q1.is_empty();break;
case 5:q1=q2;break;
case 6:cout<<q1.kol;break;
case 7:q1.print();break;
case 8:q2.print();break;
case 0:goto end;
goto start;getch();end;
}
}
Код:
//вставка элемента в хвост очереди
void turn::insert_tail(int x)
{element *temp;
temp=new element;
temp->info=x;
temp->next=0;
temp->prev=tail;
//включение элемента в список
if(head==0)
head=tail=temp;
else
{tail->prev=temp; //ХХХХХХХХХХХХЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗ
tail=temp;
}
};
//удаление элемента из головы очереди
void turn::delete_head()
{element *temp;
temp=head;
head=head->next;
delete temp;
};
//возвращение элемента из головы очереди
int turn::value()
{return head->info;
};
//проверка очереди на пустоту
bool turn::is_empty()
{return !head;
};
//копирование очереди
turn::turn(const turn&t)
{element *temp1,*temp2;
head=tail=0;
n=t.n;
temp1=t.head;
while(temp1!=0)
{temp2=new element;
temp2->info=temp1->info;
temp2->next=0;
temp2->prev=tail;
if(head==0)
head=tail=temp2;
else
{tail->next=temp2;
tail=temp2;
}
}
}
//возвращение количества элементов очереди
int turn::kol()
{return n;
}
//вывод очереди
void turn::print()
{turn *p;p=head;
while(p!=0)
{cout<<p->info<<";";
p=p->next
}
}
void main()
{turn q1,q2;
int x,sv;
start:
cout<<"1. Insert in tail."<<endl;
cout<<"2. Delete from head."<<endl;
cout<<"3. Return from head."<<endl;
cout<<"4. Is it empty?"<<endl;
cout<<"5. Copy turn."<<endl;
cout<<"6. Number of elements."<<endl;
cout<<"7. Print 1."<<endl;
cout<<"8. Print 2."<<endl;
cout<<"0. Exit"<<endl;
cin>>sv;
switch(sv)
{case 1:cout<<"Input x:";cin>>x;q1.insert_tail(x);break;
case 2:q1.delete_head();break;
case 3:q1.value();break;
case 4:q1.is_empty();break;
case 5:q1=q2;break;
case 6:cout<<q1.kol;break;
case 7:q1.print();break;
case 8:q2.print();break;
case 0:goto end;
goto start;getch();end;
}
}
void turn::insert_tail(int x)
{element *temp;
temp=new element;
temp->info=x;
temp->next=0;
temp->prev=tail;
//включение элемента в список
if(head==0)
head=tail=temp;
else
{tail->prev=temp; //ХХХХХХХХХХХХЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗ
tail=temp;
}
};
//удаление элемента из головы очереди
void turn::delete_head()
{element *temp;
temp=head;
head=head->next;
delete temp;
};
//возвращение элемента из головы очереди
int turn::value()
{return head->info;
};
//проверка очереди на пустоту
bool turn::is_empty()
{return !head;
};
//копирование очереди
turn::turn(const turn&t)
{element *temp1,*temp2;
head=tail=0;
n=t.n;
temp1=t.head;
while(temp1!=0)
{temp2=new element;
temp2->info=temp1->info;
temp2->next=0;
temp2->prev=tail;
if(head==0)
head=tail=temp2;
else
{tail->next=temp2;
tail=temp2;
}
}
}
//возвращение количества элементов очереди
int turn::kol()
{return n;
}
//вывод очереди
void turn::print()
{turn *p;p=head;
while(p!=0)
{cout<<p->info<<";";
p=p->next
}
}
void main()
{turn q1,q2;
int x,sv;
start:
cout<<"1. Insert in tail."<<endl;
cout<<"2. Delete from head."<<endl;
cout<<"3. Return from head."<<endl;
cout<<"4. Is it empty?"<<endl;
cout<<"5. Copy turn."<<endl;
cout<<"6. Number of elements."<<endl;
cout<<"7. Print 1."<<endl;
cout<<"8. Print 2."<<endl;
cout<<"0. Exit"<<endl;
cin>>sv;
switch(sv)
{case 1:cout<<"Input x:";cin>>x;q1.insert_tail(x);break;
case 2:q1.delete_head();break;
case 3:q1.value();break;
case 4:q1.is_empty();break;
case 5:q1=q2;break;
case 6:cout<<q1.kol;break;
case 7:q1.print();break;
case 8:q2.print();break;
case 0:goto end;
goto start;getch();end;
}
}