Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX 5
- typedef struct row {
- int data[MAX];
- int f;
- int r;
- } ROW;
- int isFULL(ROW *);
- int isEmpty(ROW *);
- int add(ROW *, int);
- int delete(ROW *, int *);
- int print(ROW *buffer);
- int main()
- {
- ROW buffer;
- char choice;
- int data;
- buffer.f = buffer.r = -1;
- do
- {
- printf("[1] Add new\n");
- printf("[2] Delete\n");
- printf("[3] Print all\n");
- printf("[0] Exit\n");
- printf(">> ");
- fscanf(stdin, " %c", &choice);
- switch (choice)
- {
- case '1':
- printf("Enter number that you whis to add: ");
- fscanf(stdin, "%d", &data);
- if (!add(&buffer, data))
- {
- printf("Couldn't add the number, the buffer is full.\n");
- }
- break;
- case '2':
- if (delete(&buffer, &data))
- {
- printf("The number %d has been sucessfully deleted.\n", data);
- }
- else
- {
- printf("Nothing to delete, the buffer is empty.\n");
- }
- break;
- case '3':
- if (!print(&buffer))
- {
- printf("Nothing to print, the buffer is empty.\n");
- }
- break;
- }
- printf("\n");
- } while (choice != '0');
- return 0;
- }
- int isFULL(ROW *buffer)
- {
- return (buffer->r + 1) % MAX == buffer->f;
- }
- int isEmpty(ROW *buffer)
- {
- return buffer->f == -1;
- }
- int add(ROW *buffer, int data)
- {
- if (isFULL(buffer))
- {
- return 0;
- }
- if (buffer->f == -1)
- {
- buffer->f = 0;
- }
- buffer->r = (buffer->r + 1) % MAX;
- buffer->data[buffer->r] = data;
- return 1;
- }
- int delete(ROW *buffer, int *data)
- {
- if (isEmpty(buffer))
- {
- return 0;
- }
- *data = buffer->data[buffer->f];
- if (buffer->f == buffer->r)
- {
- buffer->f = buffer->r = -1;
- }
- else
- {
- buffer->f = (buffer->f + 1) % MAX;
- }
- return 1;
- }
- int print(ROW *buffer)
- {
- if (isEmpty(buffer))
- {
- return 0;
- }
- int i = buffer->f;
- if (buffer->f <= buffer->r)
- {
- while (i <= buffer->r)
- {
- printf("%d\n", buffer->data[i++]);
- }
- }
- else
- {
- while(i <= MAX - 1)
- {
- printf("%d\n", buffer->data[i++]);
- }
- i = 0;
- while(i <= buffer->r)
- {
- printf("%d\n", buffer[i++]);
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement