сори, сразу код не выложил, нэт отрубили на неделю, только решил проблему, вот собственно что с деком получилось: Код | #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; }
|
почему-то не работает удаление хвоста, и еще не получилось сделать полную очистку дека, помогите это сделать пожалуйста! и еще вопрос, как можно это реализовать немного проще, без класса?
|