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

реалезация очереди - C++

Восстановить пароль Регистрация
 
topor
Сообщений: n/a
24.12.2010, 02:50     реалезация очереди #1
Реализовать очередь. Организовать работу пользователя со списком при помощи меню:
0 – выход из программы;
1 – добавить новый элемент в голову очереди;
2 – удалить элемент с хвоста очереди;
3 – вывести список всех элементов.
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
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
//создаем струкутуру
struct point
{
    int item;
    point *next;
};
 
 
 
 
int Add(struct point **mark)
{
    int par;
    point *tmp,*tmp2;
    puts("ENTER THE ELEMENT:");
    scanf("%d", &par);
    tmp = new point();
    tmp->item = par;
    if ((*mark) == NULL) 
    {//åñëè ГЇГіГ±ГІГ*
        (*mark) = tmp;
        (*mark)->next = tmp;
    }
    else
    {
        tmp2 = (*mark)->nex;
        (*mark)->next = tmp;
        tmp->next = tmp2;
    }
    printf("ELEMENT %d ADDED TO THE END OF QUEUE!\n\n",par);
}
 
 
 
 
 
void Delete(struct point **mark)
{
    if ((*mark) == NULL)
    {
        puts("ERROR! UNABLE TO DELETE ELEMENT: QUEUE IS EMPTY!");
    }
    else
    {
        point *tmp;
        int tint;
        if  ((*mark)->next == (*mark))
        {
            tmp = (*mark);
           
            (*mark) = NULL;
            tint = tmp->item;
            delete tmp;
        }
        else
       
        {
            tmp = (*mark)->next;
            (*mark)->next = tmp->next;
            tint = tmp->item;
            delete tmp;
        }
    printf("ELEMENT %d DELETED FROM THE START OF QUEUE!!\n",tint);
    }
}
немогу понять как дальше это все оформить в меню(

Добавлено через 1 час 8 минут
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
#include <stdio.h>
#include<conio.h>
 
int const nmax=10;
 
struct queue
{
int num;
int info;
} ;
void del_Q(queue vec[],int nmax);
int emp_o_not(queue vec[],int nmax);
void add(queue vec[],int nmax,int p);
void take_el(queue vec[],int nmax);
 
int main()
{
struct queue vec[nmax] ;
int p,k,d;
char ch;
int t;
 
void clrscr();
printf(" *realizacia ocheredi*\n");
 
del_Q(vec,nmax) ;
k=emp_o_not(vec,nmax);
if (k==1) printf("--------ochered' pusta------------\n");
 
printf("kol-vo elementov:");
scanf("%i",&t);
for(int i=0;i<t;i++)
{
printf("vvedite element:");
scanf("%i",&k);
vec[i].info=k;
}
 
for (int i=0;i<t;i++)
printf("%i",vec[i].info);
printf("\n");
printf("skok dobavit'?");
scanf("%i",&d);
printf("vvedite:");
for(int i=0;i<d;i++)
{
scanf("%i",&p);
add(vec,nmax,p) ;
}
t=t+d;
for (int i=0;i<t;i++)
printf("%i",vec[i].info);
printf("skok ydalit'?");
scanf("%i",&d);
printf("\n ydalenie... ");
for(int i=0;i<d;i++)
take_el(vec,t);
t=t-d;
printf("\n vivod.....\n");
for (int i=0;i<t;i++)
printf("%i",vec[i].info);
getch();
}
 
void del_Q(queue vec[],int nmax) //ñäåëГ*ГІГј î÷åðåäü ïóñòîé
{
for (int i=0;i<nmax;i++)
{ vec[i].num=0;
vec[i].info=0;
}
}
 
int emp_o_not(queue vec[],int nmax) //î÷åðåäü ГЇГіГ±ГІГ*/Г*ГҐГЇГіГ±ГІГ*
{
int k=0;
for (int i=0;i<nmax;i++)
if (vec[i].info==0) k=1;
return k;
 
}
 
void add(queue vec[],int nmax,int p)//äîáГ*ГўГЁГІГј ýëåìåГ*ГІ Гў î÷åðåäü
{
struct queue vec1[20];
 
for (int i=1;i<nmax;i++)
{ vec1[i].info=vec[i-1].info;}
 
vec1[0].info=p;
vec[0].num=0;
 
for (int i=0;i<nmax;i++)
{ vec[i].info=vec1[i].info;
vec[i].num=i;
}
}
 
void take_el(queue vec[],int nmax)
{int j=0;
while((vec[j].info!=0)||(j>nmax))
j++;
 if (j<=nmax) vec[j-1].info;
if (j>nmax) vec[nmax-1].info;
 
       
}
наскреб другой код к этому заданию, но тут опять не получается нормальное меню, хотя вохможно комуто этот код будет полезен как пример...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2010, 02:50     реалезация очереди
Посмотрите здесь:

Очереди на С C++
C++ Очереди (С)
C++ Очереди
Очереди. Каким образом считать две очереди из одного текстового файла? C++
C++ Разработать программу формирования очереди, содержащей целые числа, и упорядочивания по возрастанию элементов в этой очереди.
Объединить две очереди в одну, как создать две очереди C++
C++ править код (создание очереди и удаление элемента очереди по усмотрению пользователя)
Очереди (С++) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
24.12.2010, 10:59     реалезация очереди #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
char *mes[]=
{
    "1. Занести в таблицу\n",
    "2. Выбрать из таблицы\n",
    "3. Просмотреть таблицу\n",
    "4. Удалить из таблицы\n",
    "5. Завершить работу\n"
};
void (*Sunc[])()={Quit, Insert, Find, Show, Delete}; //в качестве параметров указаны имена функций
int menu ()
{
    int ans, k;
    do
    {
        for (int j=0; j<mes_count; j++)
            cout<<mes[j];
        cout<<endl;
        cout<<"Выберете действие: ";
        cin>>ans;
    }
    while (ans<0||ans>mes_count);
    
    return ans%mes_count;
}
int main()
{   
    setlocale(LC_ALL,"Russian");
    int answer;
    while (answer = menu())
        Sunc[answer]();
    cout << "\n******* Завершение *******" << endl;
}
P.S. это просто пример
Yandex
Объявления
24.12.2010, 10:59     реалезация очереди
Ответ Создать тему
Опции темы

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