![]() |
|
Модераторы: Poseidon |
![]()
|
|
| mariaaa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 7.10.2005 Репутация: нет Всего: нет |
С++ Помогите, пожалуйста, написать функцию, инвертирующую очередь в классе QueueInt.
Вот программа: #include<iostream.h> #include<conio.h> enum BOOL {false, true}; //------------------------------------------------------------------ class List { int data; List *next, *prev; int Get() {return data;} public: List(const int d) { data=d; next=prev=NULL; } friend class ListInt; friend class QueueInt; friend ostream & operator<<(ostream&, ListInt*); friend istream & operator>>(istream&, ListInt*); }; //------------------------------------------------------------------ class ListInt { protected: List *back, *front, *token; friend ostream & operator<<(ostream&, ListInt*); friend istream & operator>>(istream&, ListInt*); public: ListInt() { back=front=token=NULL; } void PutToken(int val) { List *p = new List(val); if(empty()) front=back=p; else { back->next=p; p->prev=back; back=p;} } virtual int GetToken() { if(token==NULL) token=front; if(token) { int rv=token->data; token=token->next; return rv; } else return 0;} BOOL empty() {return front==NULL? true:false;} }; //------------------------------------------------------------------ class QueueInt: public ListInt { int GetToken(); }; //------------------------------------------------------------------ ostream & operator<<(ostream& os, ListInt*q) { os<<"<"; do { if(!q->empty()) os<<q->GetToken()<<","; } while(q->token); return os<<">"<<endl; } //--------------------------------------------------------------- istream & operator>>(istream& is, ListInt*q) { int a; int k; cout<<"Сколько элементов будите вводить? "; is>>k; for(int i=0; i<k; i++) { cout<<i+1<<": "; is>>a; q->PutToken(a); } return is; } //--------------------------------------------------------------------------- int QueueInt::GetToken() { if(token==NULL) token=back; if(back) { back=back->prev; if(back) { back->next=NULL; } else front=NULL; int retval=token->data; delete token; token=back; return retval; } else return 0; } //----------------------------------------------------------------- int main() { clrscr(); ListInt* lst=new ListInt; cin>>lst; cout<<"Список:\n"; cout<<lst; ListInt*och; cout<<"Очередь:\n"; cout<<och; getch(); return 0; } Это сообщение отредактировал(а) mariaaa - 8.5.2006, 13:26 |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |