# Include "stdafx. H "# include" stdio. H "# include" stdlib. H "# define small 1 # If (small) # define Max 7 int queuedata [Max] = {'A', 'B', 'C', 'D ', 'E', 'F', 'G'}; # else # define max 14 int queuedata [Max] = {'A', 'B', 'C ', 'D', 'E', 'F', 'G', 'h', 'I', 'J', 'k', 'l', 'M ', 'N'}; # endif/* sequence queue type definition */typedef struct {int data [Max]; int head; int tail;} sqqueue; /* chain queue type definition */struct linkqueue {int data; struct linkqueue * link;}; typedef Str UCT linkqueue lkqueue; // define/* basic operation function definition of ordered queue * // initialization function of ordered queue sqinitialize () sqqueue * sq_initialize () {sqqueue * P; P = (sqqueue *) malloc (sizeof (sqqueue); If (P = NULL) {return (null);} else {P-> data [0] = 0; p-> head = 0; P-> tail = 0; Return (p) ;}/// empty judge function of the ordered queue qisempty () int qisempty (sqqueue * Queue) {If (queue-> head = queue-> Tail) Return (1); else return (0);} // The qisfull () int qisfull (sqqueue * Queue) function of the ordered queue) {If (queue-> head = max) Return (1); else return (0);} // The queuing function qinqueue () int qinqueue (sqqueue * queue, int data) {If (queue-> tail = max) {printf ("the queue is full! /N "); Return (0);} else {queue-> data [queue-> tail ++] = data; Return (1 );}} // The queuing function qoutqueue () int qoutqueue (sqqueue * queue, int * P) {If (queue-> head = queue-> tail) {printf ("the queue is empty! /N "); Return (0);} else {* P = queue-> data [queue-> head ++]; Return (1 );}} // The qinputvalue () void qinputvalue (sqqueue * queue, int array []) {int I = 0; while (qinqueue (queue, array [I]) printf ("queue [% d] = % C/T", I, array [I ++]);} // qoutputvalue () void qoutputvalue (sqqueue * Queue) {int I, queuedata; I = 0; while (qoutqueue (queue, & queuedata )) printf ("queue [% d] = % C/T", I ++, queuedata); printf ("/n ");} // Define/* Definition of basic operation functions of chained queue * // The initialization function lk_initialize () lkqueue * lk_initialize () {lkqueue * P; P = (lkqueue *) malloc (sizeof (lkqueue); If (P = NULL) {return (null);} else {P-> DATA = 0; p-> link = NULL; Return (p) ;}// the queuing function lkinqueue () of the chained queue // Note: When you enter the queue, the parameter is the team-end pointer, the returned value is also the team end pointer lkqueue * lkinqueue (lkqueue * tail, int data) {lkqueue * P; P = (lkqueue *) malloc (sizeof (lkqueue); If (P = NULL) {printf ("memory overflow when chained queue elements are added! /N "); Return (tail) ;}else {P-> DATA = data; P-> link = tail; Return (p );}} // chain queue's dispatch function lkinqueue () // Note: When a queue is exited, the parameter is the first pointer of the queue, and the returned value is also the first pointer of the queue lkqueue * lkoutqueue (lkqueue * head, int * Data) {* P = head-> data; lkqueue * P; P = (lkqueue *) malloc (sizeof (lkqueue); If (P = NULL) {printf ("memory overflow when creating a chain queue! /N "); Return (tail) ;}else {P-> DATA = data; P-> link = tail; Return (p );}} // optional int main (INT argc, char * argv []) {sqqueue * queue1; lkqueue ** lkhead, ** lktail; queue1 = sq_initialize (); if (queue1 = NULL) {printf ("memory overflow when creating an ordered queue! /N "); Return 0;} else {printf ("/n ordered queue [queue] data ......... /n "); qinputvalue (queue1, queuedata); printf ("/n sequential queue [queue] data ......... /n "); qoutputvalue (queue1);} printf ("/n finished! /N "); Return 0 ;}