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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2010, 13:22   #1
zhenya.ya
Форумчанин
 
Регистрация: 29.11.2009
Сообщений: 142
Сообщение есть очередь. Как из нее создать Дек?

есть очередь. Как из нее сделать Дек???
Код:
struct queue{
    char c;
    queue *next;
}*p,*head,*tail;

void push(void);
void pop(void);
void show(void);

int size=0;

int main(){
    char key;
    int done=false;
    while(!done){
        system("cls");
        show();
        printf("\nA)dd\nD)elete\nQ)uit\n");
        key=getchar();
        switch(toupper(key)){
            case 'A':
                push();
                break;
            case 'D':
                pop();
                break;
            case 'Q':
                done=true;
                break;
        }
    }
    return 0;
}

void push(){
    printf("input:\n");
    p=new queue;
    scanf("%s",&p->c);
    p->next=NULL;
    if(head&&tail->c==p->c){
        printf("size: %d\n",size);//system("PAUSE");
        delete p;
    }
    else{
        if(head==NULL)
            head=p;
        else
            tail->next=p;
        tail=p;
        size++;
    }
}

void pop(){
    p=head;
    if(head!=0){
        size--;
        head=head->next;
    }
    else 
        tail=0;
    delete p;
}

void show(){
    p=head;
    if(p==NULL)
        printf("queue is empty\n");
    else 
        printf("\nQueue\n");
    while(p){
        printf("%c\n",p->c);
        p=p->next;
    }
}
zhenya.ya вне форума Ответить с цитированием
Старый 14.04.2010, 23:12   #2
strider
 
Регистрация: 03.04.2008
Сообщений: 6
По умолчанию

1) Сделай список двунаправленным
2) Сделай возможность добавлять не только с хвоста, но и с головы. Назови функцию push_front, а теперяшнюю переименуй в push_back
3) Сделай возможность удалять так же с головы, назови функцию pop_back, а теперяшнюю переименуй в pop_front.
strider вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макросом создать кнопку и посадить на нее другой макрос 2 as-is Microsoft Office Excel 0 27.02.2010 11:53
Очередь, стек, дек в Delphi Katen'ka Помощь студентам 1 12.06.2009 22:23
Создать шаблон класса «очередь» (C++) NieL Помощь студентам 0 09.06.2009 13:31
Создать очередь из n целых чисел вычисляющая по формуле А=х*х+1; evrey Паскаль, Turbo Pascal, PascalABC.NET 1 02.06.2008 20:44
Создать очередь из n целых чисел вычисляющих по формуле А=х*х+1; х=1,2,3..n. evrey Помощь студентам 3 01.06.2008 00:00