Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

класс очередь в С++

16K
27 апреля 2006 года
Sektor
7 / / 27.04.2006
Помогите сделать курсовик по С++.очень надо.Сдавать скоро, если не сдам до экзамена не допустят.:(
Заранее Спасибо.
Задание:
Класс «Очередь»
(Размер очереди не ограничен).
Данные.
•Позиция головы очереди;
•Позиция хвоста очереди;
•Текущее количество элементов в очереди.
Операции.
•Конструктор, создающий пустую очередь.
•Вставка элемента в хвост очереди;
•Удаление элемента из головы очереди;
•Возвращение элемента из головы очереди;
•Проверка очереди на пустоту;
•Копирование очереди;
•Возвращение количества элементов в очереди.
Желательно реализовать класс таким образом, чтобы можно было легко изменить тип элементов, хранящихся в компонентах класса. Для этого разработайте шаблон класса.
8.4K
28 апреля 2006 года
Dian
91 / / 18.02.2006
Цитата:
Originally posted by Sektor
Помогите сделать курсовик по С++.очень надо.Сдавать скоро, если не сдам до экзамена не допустят.:(


Халяву ищем?
Назови 5 причин, по которым тебе должны его тут сделать :)

16K
28 апреля 2006 года
Sektor
7 / / 27.04.2006
А если я назову 5 причин ты мне программу сделаешь?
2
28 апреля 2006 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Dian
Халяву ищем?
Назови 5 причин, по которым тебе должны его тут сделать :)


вообще то в этом разделе такие темы не запрещены.

автору. будьте добры, прочитайте правила постинга и приведите тему в соответствие с ними. как минимум - расскажите ваше видение решения и что уже было сделано вами.

8.4K
28 апреля 2006 года
Dian
91 / / 18.02.2006
Sektor
Размеется. Если, конечно, это настоящие причины :)
Даже если не напишу - отправлю первый же попавшийся исходник, удовлетворяющий требованиям :)

squirL
OK. Давайте не будем флудить.

Соображения:
Все, что только можно, уже написано в тексте задания. Вплоть до имен переменных. Если же какие-то темные пятна все же остались - можно посмотреть любую реализацию очереди. По крайней мере С++ без stl мне еще не попадалось
16K
28 апреля 2006 года
Sektor
7 / / 27.04.2006
Dian
Вот программа, можешь хотя бы проверить ошибки?
#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;
}
}
16K
05 мая 2006 года
Sektor
7 / / 27.04.2006
ну кто нибудь проверьте ошибки.Пожалуйста.Скоро сдавать надо.
Код:
//вставка элемента в хвост очереди
 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;
  }
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог