Форум программистов, компьютерный форум CyberForum.ru

Очередь с приоритетным исключением на основе односвязного списка - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
elenkarm
1 / 1 / 0
Регистрация: 08.05.2011
Сообщений: 151
12.12.2012, 08:30     Очередь с приоритетным исключением на основе односвязного списка #1
Реализовать очередь с приоритетным исключением на основе односвязного списка. Для этого разработать следующие функции:
1. Помещение элемента в очередь. Элемент всегда помещается в хвост очереди.
2. Получение элемента с максимальным значением. Функция должна возвратить позицию первого элемента с максимальным значением (считаем, что максимальный элемент — это и есть элемент с наивысшим приоритетом).
3. Извлечение элемента с максимальным значением из очереди. Если в очереди имеется несколько одинаковых элементов, то удаляем первый из них.
4. Вывод всей очереди в порядке расположения элементов.
5. Проверка очереди на пустоту.
6. Удаление всех элементов из очереди.

Помогите,пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 08:30     Очередь с приоритетным исключением на основе односвязного списка
Посмотрите здесь:

C++ Реализовать очередь на базе односвязного списка
C++ очередь на основе двусвязного списка
C++ Очередь на основе односвязного списка
Программа должна обеспечивать:хранение данных в информационной системе в виде односвязного списка (стек и очередь) C++
Алфавитно-частотный словарь на основе односвязного списка с применением токенов C++
Напишите класс «Стек» для целочисленных данных на основе односвязного списка C++
C++ Динамическая структура данных в форме односвязного списка на основе указателей
C++ Создать шаблонный класс библиотека на основе односвязного списка

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
elenkarm
1 / 1 / 0
Регистрация: 08.05.2011
Сообщений: 151
16.12.2012, 13:40  [ТС]     Очередь с приоритетным исключением на основе односвязного списка #2
Реализовать очередь с приоритетным включением на основе односвязного списка. Для этого разработать следующие функции:
1. Помещение элемента в очередь. Каждый элемент при добавлении его в очередь вставляется в нужное место, чтобы очередь всегда была упорядочена.
2. Получение элемента из головы очереди.
3. Извлечение элемента из головы очереди.
4. Вывод всей очереди в порядке расположения элементов.
5. Проверка очереди на пустоту.
6. Удаление всех элементов из очереди.
Представим текст решения задачи
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <vcl.h>
#include<iostream.h>
#include<stdio.h>
#include<time.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#pragma hdrstop
 
struct item
 {int data;
  item *next;
 };
 item *head,*tail;
 void add(int x); //добавить эл-т в очередь с приоритет включением
 void delet1(void); //извлечение эл-та из головы
 void fromhead(void); //получить эл-т из голoвы
 void out(void); //вывод очереди
 bool isnull(void) {return head==NULL;} //проверка на пустоту
 void clrscr(void); //очистка очереди
//---------------------------------------------------------------------------
 
 main()
{  int i=1,num,z;
  head=NULL;tail=NULL;
  cout<<"                           Welcome, friends!!!"<<endl;
  while (i!=2)
        {cout<<"What action do you want do? - "<<endl;
         cout<<"                              1-Add symbol;"<<endl;
         cout<<"                              2-Get symbol from head"<<endl;
         cout<<"                              3-extract symbol from head;"<<endl;
         cout<<"                              4-Output;"<<endl;
         cout<<"                              5-Delete elements;"<<endl;
         cin>>num;
         switch(num)
                {case 1: cout<<"Enter symbol,which you want add:"<<endl;
                             cin>>z;  add(z);  out(); break;
                 case 2: fromhead(); break;
                 case 3: delet1(); break;
                 case 4: out(); break;
                 case 5: clrscr(); break;
                }
         cout<<"You want do any action?-"<<endl;
         cout<<"1-Ok!, 2-No,thanks!"<<endl;
         cin>>i;
       }
        return 0;
}
//---------------------------------------------------------------------------
void add(int x)   //добавить эл-т в очередь с приоритет включением
{item *p=new item;      //новый указатель на очередь 
 p->data=x; p->next=NULL; //присваиваем ему вводимое значение и конец очереди
item *v=new item;       //указат для нового числа
 item *p1=new item;     //указатель для просмотра очереди (следующие число)
 item *p2=new item;     //указатель для ввода числа (предыдущее число)
 int i=0;           // флажок
 if (isnull()) head=tail=p;     //проверка на конец и запись числа
 else { p2=head;
           p1=head;
          while(p1!=NULL) //пока очередь не закончится
               {if (i==1)       
                        {if(x<=p1->data ) //число меньше чем в очереди
                                { v->data=x; // присваиваем новое число
                                 v->next=p1; //присваиваем следующее число
                                 p2->next=v; //запись нового числа
                                 return;        //выход
                                }
                        p2=p2->next;    //рассматриваем следующие число 
                        }
                else
                 { if(x<=p1->data ) //число меньше чем в очереди
                       { v->data=x;    // присваиваем новое число
                         v->next=p1;  //присваиваем следующее число
                         head=v;    //запись нового числа в голову очереди
                         return;
                       }
                 }
                p1=p1->next;   //рассматриваем следующие число
                i=1;
              }
       if(p1==NULL) //конец очереди
        {tail->next=p; //последний элемент стал предпоследним
         tail=p;       // обновили указатель на хвост
        }
  }
 
}
//---------------------------------------------------------------------------
 
void delet1()   //извлечение эл-та из головы
{ if(isnull())  cout<<"Clear"<<endl; //проверка на пустоту
  else {item *p=head; //присваиваем переменной голову очереди  
        head=head->next; //голове присваиваем следующие значение очереди
        delete p;       //удаляем старое значение головы 
       }
}
 
//---------------------------------------------------------------------------
 
void fromhead()  //получение эл-та из головы
{if(isnull())  cout<<"Ochered pysta"<<endl; //проверка на пустоту
 else cout<<"Head = "<<head->data<<endl;
}
 
//---------------------------------------------------------------------------
 
void out()//вывод очереди
{ item *p=new item;
 if(isnull()) cout<<"Clear"<<endl; //проверка на пустоту
 else { cout<<"Ochered = ";
           p=head;      //присваиваем голову переменной
           while(!isnull()) //пока не конец очереди выводим на экран
             {if (p!=NULL)
                {cout<<p->data<<" ";
                 cout<<"->";
                 p=p->next;
                }
             else {cout<<"NULL"<<endl; return;}
             }
        }
}
 
//---------------------------------------------------------------------------
 
void clrscr() //очистка очереди
{while(!isnull()) delet1();
}
 
//---------------------------------------------------------------------------
Помогите переделать эту задачу под мою

Добавлено через 5 часов 33 минуты
как здесь изменить?Подскажите!Очень нужно

Добавлено через 3 часа 36 минут
Ну кто-нибудь помогите разобраться

Добавлено через 5 минут
как можно поместить элемент в конец очереди?

Добавлено через 5 минут
помогите,пожалуйста,переделать!

Добавлено через 1 час 14 минут
?????

Добавлено через 17 часов 2 минуты
подскажите,пожалуйста!Нужно сдавать,а объяснить не объяснили
Yandex
Объявления
16.12.2012, 13:40     Очередь с приоритетным исключением на основе односвязного списка
Ответ Создать тему
Опции темы

Текущее время: 01:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru