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

Простая очередь - C++

Восстановить пароль Регистрация
 
Likeri
 Аватар для Likeri
5 / 5 / 1
Регистрация: 14.12.2011
Сообщений: 92
28.12.2012, 13:53     Простая очередь #1
Здравствуйте. Мне нужно сделать циклическую очередь, я ее почти доделал но вот проблема с проверкой, она работает по кривому. Буду рад любой помощи
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
#include <iostream>
 
using namespace std;
 
#define MAX 5
 
struct queue
{
 int arr[MAX];
 int rear,front;
};
 
int isempty(struct queue *p)
{
 if(p->front == p->rear)
  return 1;
 else
  return 0;
}
void insertq(struct queue *p,int v)
{
 int t;
 t = (p->rear + 1) % MAX; 
 if(p->front == p->rear) {   
  printf("\nQueue Overflow\n");
 }
 
 {
 
  p->rear = t;  
  p->arr[p->rear] = v;
 }
}
 
int removeq(struct queue *p)
{
 if(isempty(p))
 {
  printf("\nQueue Underflow");
 }
 else
 {
  p->front = (p->front + 1) % MAX;
  return (p->arr[p->front]);
 }
}
 
void display(struct queue *p)
{
 printf("QUEUE: ");
 for(int i = 0; i < MAX; i++)
  printf("%d ", p->arr[i]);
 printf("\n");
}
 
int getMin(struct queue *p)
{
 int min = p->arr[p->rear];
 for(int i = 0; i < MAX; i++) {
  if(p->arr[i] < min)
   min = p->arr[i];
 }
 return min;
 
}
 
void main()
{
 struct queue q;
 
 q.rear = -1;
 q.front = -1;
 
 insertq(&q,7);display(&q);
 insertq(&q,10);display(&q);
 insertq(&q,12);display(&q);
 insertq(&q,15);display(&q);
 insertq(&q,8);display(&q);
 removeq(&q);display(&q);
 removeq(&q);display(&q);
 insertq(&q,16);display(&q);
 removeq(&q);display(&q);
 insertq(&q,14);display(&q);
 insertq(&q,66);display(&q);
 
 
 display(&q);
 
 cout<<"\nMin element: "<<getMin(&q);
 
 cin.get();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2012, 13:53     Простая очередь
Посмотрите здесь:

простая задача C++
Простая задача C++
простая задачка C++
Задача на очередь (вывод сообщения, что очередь пуста) C++
C++ Очередь (сделать очередь, чтобы добавляло, удаляло, читало. Не STL.)
Создать очередь. Добавить элемент в очередь. Удалить элемент из очереди C++
Простая очередь, с указателями не дружится с другим классом C++
Очередь, теория. Очередь на шести стеках C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Silvestr1994
 Аватар для Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
28.12.2012, 14:43     Простая очередь #2
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
#include<iostream>
#include<conio.h>
using namespace std;
const int maxlength = 100;
struct QUEUE{
  char elements[maxlength];
  int front;
  int rear;
  };
 
void MAKENULL(QUEUE *);
bool EMPTY(QUEUE *);
char FRONT(QUEUE *);
void ENQUEUE(char, QUEUE *);
void DEQUEUE(QUEUE *);
int addone(int);
 
int main()
{
  QUEUE Q;
  char c;
  cout<<"Enter TEXT"<<endl;
  MAKENULL(&Q);
  c = getchar();
  while (c != '=') 
  {
    ENQUEUE(c, &Q);
    c = getchar();
  }
  DEQUEUE(&Q);
  DEQUEUE(&Q);
  ENQUEUE('<', &Q);
  while (!EMPTY(&Q)) 
  {
    cout<<FRONT(&Q);
    DEQUEUE(&Q);
  }
  cout<<endl;
  getch();
  return 0;
}
 
void MAKENULL(QUEUE *Q)
{
  Q->front = 1;
  Q->rear = maxlength;
}
 
bool EMPTY(QUEUE *Q)
{
  if (addone(Q->rear) == Q->front)
    return true;
  else 
    return false;
}
 
char FRONT(QUEUE *Q)
{
  if (EMPTY(Q))
    cout<<"Queue is empty";
  else return Q->elements[Q->front];
}
 
void ENQUEUE(char elem, QUEUE *Q)
{
  if (addone(addone(Q->rear)) == Q->front)
    cout<<"Queue is full";
  else 
  {
    Q->rear = addone(Q->rear);
    Q->elements[Q->rear] = elem;
  }
}
 
void DEQUEUE(QUEUE *Q)
{
  if (EMPTY(Q))
    cout<<"Queue is empty";
  else 
    Q->front = addone(Q->front);
}
 
int addone(int i)
{
  return (i % maxlength) + 1;
}
пример очереди
Yandex
Объявления
28.12.2012, 14:43     Простая очередь
Ответ Создать тему
Опции темы

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