Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 9
1

Разработать тип данных очередь на односвязном списке

28.05.2017, 01:12. Показов 1143. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Разработать тип данных очередь на односвязном списке (struct List) для хранения вещественных значений. Разработать три функции для работы с очередями: dequeue и enqueue, и функцию для печати содержимого очереди в консоль. Протестировать разработанную очередь и функции для работы с ним.

Уважаемые форумчане помогите с написанием кода для этой задачи, завтра сдавать кр и уж не хватает этой задачи
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2017, 01:12
Ответы с готовыми решениями:

Разработать тип данных очередь
Разработать тип данных очередь (struct Queue) динамически растущий для хранения символьных...

Организовать поиск заданного числа с заменой его на заданный в односвязном списке "очередь" из случайных целых чисел
1. Создать в динамической памяти односвязный список типа «очередь» из случайных целых чисел ....

Remove_at() в односвязном списке
Привет. Не пойму как в данном(рабочем) коде, при удалении элемента посреди списка, предыдущему...

Поиск в односвязном списке
Добрый всем день. Знаю что тема неоднократно поднималась. Помогите реализовать поиск по...

1
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
28.05.2017, 01:25 2
Лучший ответ Сообщение было отмечено khusnish как решение

Решение

//подойдет как пример?

//файл queue.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#ifndef _QUEUE_H
#define _QUEUE_H
 
class Custumer{
private:
 
    long arrive;
 
    int processtime;
public:
 
    Custumer(){arrive=processtime=0;}
    void set(long when);
    long when()const{return arrive;}
    int ptime()const{return processtime;}
};
 
typedef Custumer Item;
 
 
class Queue_b{
struct Node{Item item; struct Node*next;};
enum{Q_SIZE = 10};
private:
 
    Node * front;
 
 
    Node * rear;
 
 
    int items;
 
 
    const int qsize;
 
    Queue_b(const Queue_b & q):qsize(0){}
 
 
    Queue_b&operator=(const Queue_b&q){return*this;}
 
public:
 
    Queue_b(int qs=Q_SIZE);
 
    ~Queue_b();
    bool isempty()const;
    bool isfull()const;
    int queuecount()const;
 
    bool enqueue(const Item&item);
 
    bool dequeue(Item&item);
};
#endif
//файл queue.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include"queue.h"
#include <cstdlib>
 
Queue_b::Queue_b(int qs):qsize(qs)
{
    front=rear=NULL;
    items=0;
}
Queue_b::~Queue_b()
{
    Node * temp;
    while(front!=NULL)
    {
        temp=front;
        front=front->next;
        delete temp;
    }
}
//
bool Queue_b::isempty()const
{
    return items==0;
}
//
bool Queue_b::isfull()const
{
    return items==qsize;
}
//
int Queue_b::queuecount()const
{
    return items;
}
bool Queue_b::enqueue(const Item&item)
{
    if(isfull())
        return false;
    Node * add= new Node;
    if(add==NULL)
         return false;
    add->item=item;
    add->next=NULL;
    items++;
    if(front==NULL)
        front=add;
    else
        rear->next=add;
    rear=add;
    return true;
}
 
 
bool Queue_b::dequeue(Item&item)
{
    if(front==NULL)
         return false;
 
    item=front->item;
    items--;
 
    Node*temp=front;
 
     front = front->next;
 
    delete temp;
 
    if(items == 0)
        rear=NULL;
    return true;
}
 
void Item::set(long when)
{
    processtime=rand()%3+1;
    arrive=when;
}





//main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
#include"queue2.cpp"
 
const int MIN_PER_HR=60;
 
bool newcastomer(double x);
 
int main()
{
srand(time(0));
cout<<"Case Study: Bank of Heather Automatic Teller\n";
cout<<"Entet maximum size of queue:";
int qs;
cin>>qs;
Queue_b line(qs);
 
cout<<"Entet the number of simulation of hours:";
int hours;
cin>>hours;
long cyclelimit=MIN_PER_HR*hours;
cout<<"Entet the averege  number of customers per hours:";
double perhour;
cin>>perhour;
double min_per_cust;
 
min_per_cust=MIN_PER_HR/perhour;
Item temp;
long tyrnaways=0;
long customers=0;
long served=0;
long sum_line=0;
int wait_time=0;
long line_wait=0;
 
 
 
for(int cycle=0;cycle<cyclelimit;cycle++)
{
    if(newcastomer (min_per_cust))
    {
        if(line.isfull())
            tyrnaways++;
        else
          {
            customers++;
            temp.set(cycle);
            line.enqueue(temp);
           }
     }
     if(wait_time<=0&&!line.isempty())
    {
        line.dequeue(temp);
        wait_time=temp.ptime();
        line_wait+=cycle-temp.when();
        served++;
    }
    if(wait_time>0)
    {
        wait_time++;
    }
      sum_line+=line.queuecount();
}
if(customers>0){
cout<<"costumer accepted:"<<customers<<"\n";
cout<<"    costumer served:"<<served<<"\n";
cout<<".                     tyrnaways:"<<tyrnaways<<"\n";
cout<<"average queue size:";
cout.precision(2);
cout.setf(ios_base::fixed, ios_base::floatfield);
cout.setf(ios_base::showpoint);
cout<<(double)sum_line/cyclelimit<<"\n";
cout<<"average wait time: "<<(double)line_wait/served<<"minutes\n";
}
else
    cout<<"No coments!\n";
cout<<"Done";
    system("pause");
    return 0;
}
 
bool newcastomer(double x)
{
return (rand() * x/RAND_MAX<1);
}
0
28.05.2017, 01:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2017, 01:25
Помогаю со студенческими работами здесь

Ошибка в односвязном списке
Ошибка в функции вывод на экран информации содержащую список. Название функции Print. Ошибка: ...

Конструктор в односвязном списке
В общем, я только начинаю разбираться в программировании, и у меня возник такой вопрос: как...

Стек на односвязном списке
#include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;malloc.h&gt; ...

Ошибка в односвязном списке
#include&lt;iostream&gt; #include&lt;clocale&gt; using namespace std; #define DEBUG class Monom{...

Указатели в односвязном списке
Хочу создать код , в котором пользователь заполняет данные по вопросам , и выводит их на экран ....

Ошибка в односвязном списке
#include &quot;exception.cpp&quot; template &lt;class item&gt; class List { struct Element { item inf;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru