Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.c
- // lab6
- //
- // Created by Денис Домашевич on 18.04.2018.
- // Copyright © 2018 Денис Домашевич. All rights reserved.
- //
- #include <mm_malloc.h>
- #include <stdbool.h>
- #include <stdio.h>
- int getInt() {
- int res;
- while(true) {
- if(scanf("%d", &res) && getchar() == '\n') {
- return res;
- } else {
- printf("Try again\n");
- while(getchar() != '\n') {}
- }
- }
- }
- typedef struct QueueNode {
- int data;
- struct QueueNode *next;
- } QueueNode;
- struct Queue {
- size_t len;
- QueueNode *top;
- };
- typedef struct Queue Queue;
- Queue *createQueue() {
- Queue *q = (Queue *)malloc(sizeof(Queue));
- q->len = 0;
- q->top = NULL;
- return q;
- }
- void printQueue(Queue *queue) {
- QueueNode * currNode = queue->top;
- while(currNode != NULL) {
- printf("%d ", currNode->data);
- currNode = currNode->next;
- }
- }
- void queuePush(Queue *queue, int data) {
- QueueNode * newNode = (QueueNode *)malloc(sizeof(QueueNode));
- newNode->data = data;
- QueueNode * currNode = queue->top;
- if(currNode == NULL) {
- currNode = newNode;
- } else {
- while(currNode->next != NULL) {
- currNode = currNode->next;
- }
- currNode->next = newNode;
- }
- queue->len++;
- }
- void queuePop(Queue *queue) {
- QueueNode *oldTop = queue->top;
- queue->top = oldTop->next;
- queue->len--;
- free(oldTop);
- }
- int getTop(Queue *queue) {
- return queue->top->data;
- }
- void printCommands() {
- printf("1: Add element in queue\n");
- printf("2: Stop\n");
- }
- void addElments(Queue *q) {
- while(true) {
- printCommands();
- int type = getInt();
- if(type == 1) {
- int newElement = getInt();
- queuePush(q, newElement);
- } else if(type == 2) {
- break;
- } else {
- printf("Try again\n");
- }
- }
- }
- int main() {
- Queue *q = createQueue();
- addElments(q);
- printQueue(q);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement