Mega Code Archive

 
Categories / C / Data Structure Algorithm
 

Queue in C

#include <string.h> #include <stdlib.h> #include <stdio.h> #include <ctype.h> #define MAX 100 char *p[MAX], *pop(void); int spos = 0; int rpos = 0; void add(void), push(char *q), print(void), remove(void); void add(void) {   char s[256], *p;   do {     printf("spos %d: ", spos+1);     gets(s);     if(*s==0) {        break;     }     p = (char *) malloc(strlen(s)+1);     if(!p) {       printf("Out of memory.\n");       return;     }     strcpy(p, s);     if(*s) {        push(p);     }   } while(*s); } void print(void) {   int t;   for(t=rpos; t < spos; ++t)     printf("%d. %s\n", t+1, p[t]); } void remove(void) {   char *p;   if((p=pop())==NULL) {      return;   }   printf("%s\n", p); } void push(char *q) {   if(spos==MAX) {     printf("List Full\n");     return;   }   p[spos] = q;   spos++; } char *pop(void) {   if(rpos==spos) {     printf("No more.\n");     return NULL;   }   rpos++;   return p[rpos-1]; } int main(void) {   char s[80];   register int t;   for(t=0; t < MAX; ++t) {      p[t] = NULL;   }   while(1) {     printf("Add(A), Print(P), Remove(R), Quit(Q): ");     gets(s);     *s = toupper(*s);     switch(*s) {       case 'A':         add();         break;       case 'P':         print();         break;       case 'R':         remove();         break;       case 'Q':         exit(0);     }   }   return 0; }