Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2011, 21:45   #1
mego4el
Пользователь
 
Аватар для mego4el
 
Регистрация: 19.09.2010
Сообщений: 87
Вопрос Очередь и дек С++

Ребят, помогите пожалуйста сделать небольшую программу, ну просто горит(((.
Разработать программу на С++, для реализации основных операций над полу-статичными структурами данных (добавление, удаление) и над их информационными частями-строками (поиск, извлечение, добавление символов и т.д.), на примере очереди и дека, строки - векторы фиксированной длины.
Спасибо огромное!
mego4el вне форума Ответить с цитированием
Старый 11.03.2011, 10:41   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

500 рублей

ну или наработочки конечно

Последний раз редактировалось onewho; 11.03.2011 в 10:45.
onewho вне форума Ответить с цитированием
Старый 13.03.2011, 21:31   #3
mego4el
Пользователь
 
Аватар для mego4el
 
Регистрация: 19.09.2010
Сообщений: 87
По умолчанию

Сори, сразу код не выложил, нэт отрубили на неделю, только решил проблему, вот собственно что с деком получилось:

Код:
#include <iostream>
#include <windows.h>
using namespace std;
 
class Node
{
public:
            
        char number[100];
        Node* next;
        Node* last;
};
 
void russia(const char*);
 
        
        short action = -1;
        Node* head = NULL;
        Node* tail = NULL;
        Node* lastPtr = NULL;
                Node* ptrLast = NULL;
 
                int i,j;
 
       int add()
           
               
                { 
                       system("CLS");
                        Node* ptr = new Node;
                        
                        russia("Введите данные: ");
                        cin>>ptr->number;
                        ptr->next = NULL;
                        if (head == 0)
                        {
                                head = ptr;
                                lastPtr = ptr;
                                system("CLS");
                                return 0;;
                        }
                        lastPtr->next = ptr;
                        lastPtr = ptr;
                        system("CLS");
                        return 0;;
           }
 
         
              int  prosm()
                {
                                        {
                       system("CLS");      
                                        Node* ptr = NULL;
                                                
                        if (head == NULL)
                        {
                                russia("\t!!! СПИСОК ПУСТ !!!\n\n");
                                system("PAUSE");
                                system("CLS");
                                                                return 0;                                
                        }
                        russia("* * * * * СПИСОК * * * * *\n\n");
                        ptr = head;
                        while (1)
                        {
                                cout<<ptr->number<<" ";
                                if (ptr->next == 0)
                                        break;
                                ptr = ptr->next;
                        }
                        cout<<"\n\n";
                        system("PAUSE");
                        system("CLS");
                                                }
                        return 0;
                }
 
              
 
                int delhead()
                {
                        system("CLS");
                        Node* ptrDelete = NULL;                 
                        if (head == NULL)
                        {
                                russia("\t!!! СПИСОК ПУСТ !!!\n\n");
                                system("PAUSE");
                                system("CLS");
                                                                return 0;
                                
                        }
                        if (head->next == NULL)
                        {
                                head = NULL;
                                tail = NULL;
                                delete head;
                                
                        }
                        ptrDelete = head;
                        head = ptrDelete->next;
                        head->last = NULL;
                        delete ptrDelete;
                        return 0;
                }
 
                int deltail()
                {
                        system("CLS");
                        Node* ptrDelete = NULL;
                        if (tail == NULL)
                        {
                                russia("\t!!! СПИСОК ПУСТ !!!\n\n");
                                system("PAUSE");
                                system("CLS");
                                return 0;
                        }
                        if (tail->last == NULL)
                        {
                                head = NULL;
                                tail = NULL;
                                delete tail;
                                
                        }                       
                        ptrDelete = tail;
                        tail = ptrDelete->last;
                        tail->next = NULL;
                        ptrLast = tail;
                        delete ptrDelete;
                        return 0;
                }
mego4el вне форума Ответить с цитированием
Старый 13.03.2011, 21:31   #4
mego4el
Пользователь
 
Аватар для mego4el
 
Регистрация: 19.09.2010
Сообщений: 87
По умолчанию

продолжение:

Код:
                int poisk()
                {
                        system("CLS");
                        Node* ptr = NULL;
                        char key [50];
                        if (head == NULL)
                        {
                                russia("\t!!! СПИСОК ПУСТ !!!\n\n");
                                system("PAUSE");
                                system("CLS");
                                                                return 0;
                                
                        }
                        russia("Введите Элемент Для Поиска: ");
                        cin>>key;                       
                        ptr = head;
                        while (1)
                        {
                                if (key == ptr->number)
                                {
                                        russia("\n\t!!! ЭЛЕМЕНТ НАЙДЕН !!!\n");
                                        break;
                                }
                                if (ptr->next == NULL)
                                {
                                        russia("\n\t!!! ЭЛЕМЕНТ НЕ НАЙДЕН !!!\n");
                                        break;
                                }
                                ptr = ptr->next;
                        }
                        system("PAUSE");
                        system("CLS");
                        return 0;
                }
 
                                int proverka()
                                {
                        Node* ptr = NULL;
                        system("CLS");
                        if (head == NULL)
                        {
                                russia("\t!!! СПИСОК ПУСТ !!!\n\n");
                                system("PAUSE");
                                system("CLS");
                                                                return 0;
                                
                        }
                                                 
                                                if (head != NULL)
                                                {
                                                        russia("\t!!! СПИСОК НЕ ПУСТ !!!\n\n");
                                                        system("PAUSE");
                                                        system("CLS");
                                                        return 0;
                                                        
                                                }
                                                return 0;
                                }
        int del()
                {return 0;}
 
void russia(const char* rus)
{
        char word[120];
        CharToOem(rus, word);
        cout<<word;
}
 int main()
 {
         do
         {
                    russia("1. Добавить Элемент\n");
                russia("2. Просмотр Списка \n");
                russia("3. Удалить Голову\n");
                russia("4. Удалить Хвост\n");
                russia("5. Поиск Элемента\n");
                                russia("6. Проверить, пуст ли дек\n");
                                russia("7. Очистить дек\n");
                russia("0. Выход\n\n");                         
                russia("Ваш Выбор: ");
                cin>>action;
 
                                switch (action)
                                {
                                case 1: add(); break;
                                case 2: prosm(); break;
                                case 3: delhead(); break;
                                case 4: deltail(); break;
                                case 5: poisk(); break;
                                case 6: proverka(); break;
                                case 7: del(); break;
                                case 0: return 0; break;
                                }
                russia("1. Продолжыть роботу\n");
                    russia("0. Выйти\n");
                cin>>action;
                            system("PAUSE");
                                system("CLS");
         }
         while (action!=0);
         return 0;
}
почему-то не работает удаление хвоста, и еще не получилось сделать полную очистку дека, помогите это сделать пожалуйста!

и еще вопрос, как можно это реализовать немного проще, без класса?
mego4el вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дек на массиве tema93 Общие вопросы C/C++ 0 16.02.2011 12:09
дек на основе динамического массива Aндрей Общие вопросы C/C++ 0 28.10.2010 21:11
есть очередь. Как из нее создать Дек? zhenya.ya Помощь студентам 1 14.04.2010 23:12
Вставка в дек потоками Sparky Помощь студентам 2 24.03.2010 17:04
Очередь, стек, дек в Delphi Katen'ka Помощь студентам 1 12.06.2009 22:23