# include # include # include # define elem 10 struct Row // Δήλωση της δομής της ουράς { int element[elem]; int * front; int * tail; int size; }; // Συνάρτηση ελέγχου κενής ουράς bool is_Empty(Row *B) { bool emp=false; if (B->size==0) {emp=true;}; return (emp); } // Συνάρτηση εισαγωγής ενός στοιχείου στην ουρά void insert_el (Row *B, int new_element) { if(B->size > elem-1) { printf("\n\n Η ουρά είναι πλήρης ! \n"); return; } else { *(B->tail)=new_element; B->tail++; B->size++; } } // Συνάρτηση διαγραφής του πρώτου στοιχείου της ουράς void delete_el (Row *B) { if (B->fronttail) { (*B->front)=NULL; B->front++; B->size--; } else printf("\n\n Η ουρά είναι κενή ! \n"); } // Εκτύπωση της ουράς void print_row(Row *B) { int i; if ((B->size)<1) printf("\n\n Η ουρά είναι κενή ! \n"); else { printf("\nΘέση Τιμή \n"); for (i=(B->size-1); i>-1; i--) printf("\n %d %d", (B->size-i), *(B->tail-i-1)); } } int main() { Row A; int inp_el,i; char choi; A.front=&(A.element[0]); A.tail=&(A.element[0]); A.size=0; printf("\nΠρόγραμμα διαχείρησης ουράς με ακέραια στοιχεία \n"); do { // εμφάνιση του μενού επιλογών printf(" \n Μενού επιλογής πράξης \n"); printf(" ------------------------ \n"); printf(" 1 προσθήκη νέου στοιχείου \n"); printf(" 2 διαγραφή του πρώτου στοιχείου \n"); printf(" 3 εκτύπωση της ουράς \n"); printf(" 4 εκτύπωση του πρώτου στοιχείου \n"); printf(" 5 εκτύπωση του τελευταίου \n"); printf(" 6 έλεγχος αν είναι κενή \n"); printf(" 7 έλεγχος αν είναι πλήρης \n"); printf(" 8 Τέλος των πράξεων \n"); printf("\n Δώστε την επιλογή σας: "); choi=getchar( ); switch(choi) { case '1': // προσθήκη νέου στοιχείου printf("\nΠοιά τιμή θέλετε να εισάγετε: "); scanf("%d",&inp_el); fflush(stdin); insert_el(&A,inp_e); break; case '2': // διαγραφή του πρώτου στοιχείου delete_el(&A); break; case '3': // εκτύπωση της ουράς print_row(&A); break; case '4': // εκτύπωση του πρώτου στοιχείου printf("\n\n Το πρώτο στοιχείο είναι = %d\n", (*(A.front))); break; case '5': // εκτύπωση του τελευταίου printf("\n\n Το τελευταίο στοιχείο είναι = %d\n", A.element[elem-1]); break; case '6': // έλεγχος αν είναι κενή printf("\n"); if (is_Empty(&A)) printf("\n Η ουρά είναι κενή ! \n"); else printf("\n Η ουρά δεν είναι κενή ! \n"); break; case '7': // έλεγχος αν είναι πλήρης if (A.tail == &(A.element[elem])) printf("\n\n Η ουρά είναι πλήρης. \n"); else printf("\n\n Η ουρά δεν είναι πλήρης. \n"); break; case '8': //Τέλος των πράξεων printf("\n\nΠατήστε Enter για έξοδο..."); getchar( ); exit(1); default: // για κάθε άλλη περίπτωση printf("\n Λάθος επιλογή \n"); break; } } while (choi != '8'); }