Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [С++]Очередь и дек  
:(
    Опции темы
mego4el
  Дата 10.3.2011, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 19.9.2010

Репутация: нет
Всего: нет



Ребят, помогите пожалуйста сделать небольшую программу, ну просто горит(((.  smile 
Разработать программу на С++, для реализации основных операций над полу-статичными структурами данных (добавление, удаление) и над их информационными частями-строками (поиск, извлечение, добавление символов и т.д.), на примере очереди и дека, строки - векторы фиксированной длины.
Спасибо огромное!
PM MAIL   Вверх
mego4el
  Дата 13.3.2011, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 19.9.2010

Репутация: нет
Всего: нет



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

Код

#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;
                }
 
                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;
}


почему-то не работает удаление хвоста, и еще не получилось сделать полную очистку дека, помогите это сделать пожалуйста!

и еще вопрос, как можно это реализовать немного проще, без класса? 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0625 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.