Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct Stack { //Стек
- char key;
- struct Stack *next;
- } *St = NULL;
- struct Queue { //Очередь
- char key;
- struct Queue *next;
- } *Head = NULL;
- void Push(Stack **top, char data) //Добавление в стек
- {
- Stack *tmp = new Stack;
- tmp->key = data;
- tmp->next = *top;
- *top = tmp;
- }
- char Pop(Stack **top) //Получение данных из стека и постепенное освобождение памяти из под него
- {
- char temp = (*top)->key;
- Stack *tmp = *top;
- *top = (*top)->next;
- delete tmp;
- return temp;
- }
- Queue * First(char data) //Для первого элемента в очереди
- {
- Queue *tmp = new Queue;
- tmp->next = NULL;
- tmp->key = data;
- return tmp;
- }
- void Insert(Queue* &Head, char x) //Добавление элементов в очередь
- {
- Queue *tmp = Head,
- *NewNode = new Queue; //Создание нового узла
- if (Head == NULL) { //Если очередь еще пуста
- Head = First(x); //Вставляем первый элемент
- return;
- }
- NewNode->key = x; //Иначе заполняем данными новый узел
- NewNode->next = NULL;
- while (tmp->next) tmp = tmp->next; //Находим для него место в самом конце очереди
- tmp->next = NewNode; //И ставим его в это место
- }
- void PrintQueue(Queue* Head) //Вывод очереди
- {
- Queue* tmp = Head;
- while (tmp) {
- printf("%c ", tmp->key);
- tmp = tmp->next;
- }
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- char a;
- setlocale(LC_CTYPE, "Russian"); //Подключение русского языка
- printf("Введите символы (Окончание ввода 0): ");
- while (1) { //Бесконечный цикл для ввода данных в стек
- scanf("%c", &a);
- if (a == '0') break; //Выход по нулю
- Push(&St, a);
- }
- while (St) {
- char tmp = Pop(&St); //Получение символа со стека
- if (!(tmp >= 'a' && tmp <='z' || tmp >= 'A' && tmp <= 'Z')) //Проверка символа. Истина, если не буква
- Insert(Head, tmp); //Заполнение очереди не буквами
- }
- printf("\nОчередь с не буквами: ");
- PrintQueue(Head);
- free(Head); //Высвобождение памяти из под очереди
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement