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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Классы. Многофайловые проекты. Описать класс с именем STUDENT http://www.cyberforum.ru/cpp-beginners/thread728572.html
Описать класс с именем STUDENT, содержащий поля:  фамилия и инициалы;  номер группы;  успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия:  ввод с клавиатуры данных класса типа STUDENT;  вывод на дисплей фамилий и номеров групп для всех студентов, если они имеют оценки 4 и 5;  если таких студентов нет, вывести соответствующее сообщение.
C++ Строки с символами (сколько слов в строке) Дана строка, содержащая пробелы. Найдите, сколько в нем слов (слово – это последовательность непробельных символов, слова разделены одним пробелом, первый и последний символ строки – не пробел). Вход: На вход подается несколько строк. Выход: количество слов в первой из введенных строк. Не могу понять. Объясните что к чему. http://www.cyberforum.ru/cpp-beginners/thread728567.html
C++ рекурсия и массивы: числа Фибоначчи
привет всем ! как с помощью рекурсии с параметрами массива реализовать числа Фибоначчи ? вот что то на клепал #include "stdafx.h" #include <iostream> #include <locale.h> using namespace std; #define g_max 15
Описательная часть C++
Здравствуйте, меня тут озадачили вопросом: для чего нужна описательная часть програмного блока с++ и что это такое? Может кто-нибудь даст понятный ответ, потому-что гугл не помог.
C++ прочитать массив из файла и отсортировать его по возрастанию http://www.cyberforum.ru/cpp-beginners/thread728525.html
Доброго времени суток! у меня такая задача... прочитать массив из файла и отсортировать его по возрастанию. Все значения целые и по модулю не превосходят 2147483647. Количество чисел в массиве не превышает 100000. время на тест 1 секунда. Пытаюсь сделать, но что-то не совсем получается... :gsorry: помогите, пожалуйста, разобраться, если можете... #include <fstream> using namespace std; int...
C++ В начало двоичного файла целого типа дописать нечетные элементы этого файла В начало двоичного файла целого типа дописать нечетные элементы этого файла. как ето описать правильно и чтоби в началосписка делал? #include <iostream> #include <fstream> #include <stdlib.h> #include <time.h> using namespace std; подробнее

Показать сообщение отдельно
elenkarm
1 / 1 / 0
Регистрация: 08.05.2011
Сообщений: 151
16.12.2012, 13:40  [ТС]     Очередь с приоритетным исключением на основе односвязного списка
Реализовать очередь с приоритетным включением на основе односвязного списка. Для этого разработать следующие функции:
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 минуты
подскажите,пожалуйста!Нужно сдавать,а объяснить не объяснили
 
Текущее время: 23:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru