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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
nati94
2 / 2 / 0
Регистрация: 18.02.2013
Сообщений: 29
#1

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

17.03.2013, 13:30. Просмотров 1188. Ответов 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]);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2013, 13:30     Циклическая очередь, сбой после удаления/добавления элемента
Посмотрите здесь:
C++ Создать очередь, написать функции для добавления/удаления элементов
C++ Двухсторонная очередь (Дек) - удаления элемента
C++ Реализовать приложение, содержащее функции добавления нового элемента в массив и удаления элемента из массива. (Имитируется “резиновый” массив)
Написать функции добавления и удаления произвольного элемента динамического массива C++
C++ Циклическая очередь
Ошибка после удаления элемента из массива C++
C++ Динамическая структура — циклическая очередь
C++ Методы добавления, удаления объекта
C++ Очередь со структурой, функции добавления и чтения
Стеки, функции добавления и удаления элементов C++
C++ Функции добавления, удаления данных в массиве.
C++ Очередь, исправить функцию удаления

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nati94
2 / 2 / 0
Регистрация: 18.02.2013
Сообщений: 29
17.03.2013, 13:46  [ТС]     Циклическая очередь, сбой после удаления/добавления элемента #2
скрин
Миниатюры
Циклическая очередь, сбой после удаления/добавления элемента  
Yandex
Объявления
17.03.2013, 13:46     Циклическая очередь, сбой после удаления/добавления элемента
Ответ Создать тему
Опции темы

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