Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 18.02.2013
Сообщений: 29
1

Циклическая очередь, сбой после удаления/добавления элемента

17.03.2013, 13:30. Просмотров 1976. Ответов 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
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <iostream>
#include <conio.h>
#define MAX 3
using namespace std;
 int q[MAX];
int qnext=0,qindex=0,qlength=MAX;
 
 
 int main(void)
{
 void Add(void);
 int Delete(void);
 void Print(void);
 setlocale(0,"");
 for(int t=0; t < MAX; ++t) q[t] = NULL;
 int a;
 bool flag=true;
 while(flag)
 {
 printf("Выберите требуемый пункт меню:\n");
 printf("Ввести (1), Удалить (2),  Список (3),Выход (0): ");
 cin >> a;
 
 switch(a)
 {
 case 0: flag=false; break;
 case 1: Add(); break;
 case 2: Delete(); break;
 case 3: Print(); break;
 default: printf("Введено некорректное значение. Попробуйте еще раз!\n\n");
 }
 } 
 }
 
 void Add(){
 if(qnext+1 == qindex || (qnext == qlength && !qindex))
 {
  cout<<"Мест нет! Очередь будет переполнена!\n";
   qnext=0;
 scanf("%d", &q[qnext]);   //запись;
  // Смещение позиции записи
  // Циклический переход.
 return;
 }
 scanf("%d", &q[qnext]);   //запись;
 qnext++; // Смещение позиции записи
 if(qnext>qlength)
  qnext=0; // Циклический переход.
 }
 
 int Delete()
{
 if(qindex == qlength)
  qindex=0; // Циклический переход.
 if(qindex+1 == qnext)
 {
  cout<<"Очередь пуста.\n";
  return 0;
 }
 qindex++; // Смещение позиции считывания
 return q[qindex-1]; // Считывание
}
 
 void Print(void)
{ 
 for(int t=qindex; t < MAX; t++)
  if (q[t]!=NULL)
          printf("%d. %d\n", t+1, q[t]);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2013, 13:30
Ответы с готовыми решениями:

Создать очередь, написать функции для добавления/удаления элементов
Добрый. Помогите, пожалуйста. Задание: Разработать функции, позволяющие: 1)создать очередь;...

Двухсторонная очередь (Дек) - удаления элемента
Помогите кто чем может. Задача такая: Удаления элемента с середины дека (двухсторонная очередь),...

Реализовать приложение, содержащее функции добавления нового элемента в массив и удаления элемента из массива. (Имитируется “резиновый” массив)
Реализовать приложение, содержащее функции добавления нового элемента в массив и удаления элемента...

Перегрузка операций добавления и удаления нового элемента в динамическом массиве
Здравствуйте, имеется класс представляющий собой понятие динамического массива. Нужно перегрузить...

1
2 / 2 / 0
Регистрация: 18.02.2013
Сообщений: 29
17.03.2013, 13:46  [ТС] 2
скрин
0
Миниатюры
Циклическая очередь, сбой после удаления/добавления элемента  
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2013, 13:46

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Написать функции добавления и удаления произвольного элемента динамического массива
Несмотря на вроде бы распространенность задачи нигде не могу найти простое и универсальное решение,...

Создать стек целочисленных значений. Реализовать операции добавления (push) и удаления (pop) элемента из стека
Создать стек целочисленных значений. Реализовать операции добавления (push) и удаления (pop)...

Циклическая очередь
Создать класс типа - циклическая очередь. Функции-члены получают элемент и вставляют элемент.

Ошибка после удаления элемента из массива
После функции Delete выводится уже далеко не то, что должно было остаться, компилятор не пишет...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.