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

Работа со списком типа очередь - C++

Восстановить пароль Регистрация
 
DarkSwan
0 / 0 / 0
Регистрация: 11.10.2010
Сообщений: 17
14.12.2010, 13:20     Работа со списком типа очередь #1
Здравствуйте. Нужно создать числовой список типа очередь из 5 объектов. Распечатать его. Далее выполнить следующие операции:
1. Добавить два новых элемента. Распечатать очередь.
2. Поменять местами 1-ый и последний элементы в очереди. Распечатать очередь.
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
#include "stdafx.h"
#include "iostream.h"
 
struct elem
{
    int inf;    //информационное поле
    struct elem *link;  //указатель на предыдущий элемент очереди
}*begq=NULL,*endq=NULL;
 
void addel(int val) //функция создания/дополнения очереди
{
    elem *p=new elem;   //временный указатель на элемент очереди
    p->inf=val; //запись информации
    p->link=NULL;   //запись указателя на прерыдущий элемент
    if(endq==NULL)begq=p;   //если создатся первый элемент очереди
    else endq->link=p;  //если создается очередной элемент очереди
    endq=p;
    cout<<"Element = "<<p->inf<<endl;   //вывод очереди
}
 
int getdelel(void)  //функция для извлечения информации из начального элемента и освобожд. его памяти
{
    elem *p;    //временный указатель на элемент очереди
    int temp;
    temp=begq->inf;
    p=begq;
    begq=p->link;
    if(begq==NULL) endq=NULL;   //если удаляется последний элемент очереди
    delete p;
    return temp;
}
 
int main(int argc,char* argv[])
{
    cout<<"Pervonachalnii spisok:"<<endl;
    for(int i=1;i<=5;i++)   //создание очереди из 5 элементов
        addel(i);
    cout<<"\n"<<"2 novih elementa spiska:"<<endl;
    for(i=8;i<=9;i++)   //добавление 2 элементов - НАВЕРНОЕ, это делать надо не так
        addel(i);
    cout<<"\n"<<"Pomenyanie mestami 1 i poslednii elementi:"<<endl;
    ??????????
    cout<<"\n"<<"Ochered' s udalennimi 3 ob'ektami:"<<endl;
    ??????????
    //удаление очереди с распечаткой ее элементов
//  while(begq!=NULL) cout<<"Value = "<<getdelel()<<endl;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2010, 13:20     Работа со списком типа очередь
Посмотрите здесь:

C++ Описать класс, реализующий очередь целых чисел типа FIFO.
Работа со списком C++
C++ Работа со списком
C++ работа со списком
Программа с использованием объектов типа стека или очередь на C. C++
C++ Создать структуру, реализующую очередь целых чисел типа FIFO
C++ Использование using над списком шаблонных аргументов переменного типа
Работа со списком C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
14.12.2010, 13:58     Работа со списком типа очередь #2
список конструируется не правильно, тут в:
C++
1
2
3
4
5
6
7
8
9
10
void addel(int val)     //функция создания/дополнения очереди
{
        elem *p=new elem;
        p->inf=val;
        p->link=NULL;
        if(endq==NULL)begq=p; // здесь
        else endq->link=p;        // и здесь
        endq=p;
        cout<<"Element = "<<p->inf<<endl;
}
получается, что на begq всегда будет висеть только один элемент. По идее-то begq должен указывать на первый элемент списка, а endq на последний и каждый элемент должен иметь ссылку на следующий и/или предыдущий, а тут разрыв
DarkSwan
0 / 0 / 0
Регистрация: 11.10.2010
Сообщений: 17
14.12.2010, 13:59  [ТС]     Работа со списком типа очередь #3
Вот конкретно этот кусок взят из методички, которую препод писал
Yandex
Объявления
14.12.2010, 13:59     Работа со списком типа очередь
Ответ Создать тему
Опции темы

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