#include<stdio.h> #define max 100 #define scanf scanf_s//顺序队 typedef struct { ?? ?int* base; ?? ?int front, rear; }sql; int cre(sql& q) { ?? ?q.base = new int[max]; ?? ?if (!q.base) return -1; ?? ?q.front = q.rear = 0; ?? ?return 1; } int len(sql q)//队长 { ?? ?return(q.rear - q.front + max) % max; } int inq(sql& q)//输入 { ?? ?int e; ?? ?scanf("%d", &e); ?? ?if ((q.rear + 1) % max == q.front) ?? ??? ?printf("已满"); ?? ?q.base[q.rear] = e; ?? ?q.rear = (q.rear + 1) % max; ?? ?return 0; } int lea(sql& q)//取队头 { ?? ?if (q.rear == q.front) ?? ??? ?printf("空"); ?? ?int e = q.base[q.front]; ?? ?q.front = (q.front + 1) % max; ?? ?return e; } int getfront(sql q)//读队头 { ?? ?if (q.front == q.rear) ?? ?{ ?? ??? ?printf("空"); ?? ??? ?return 0; ?? ?} ?? ?else return(q.base[q.front]); } void main() { ?? ?sql q; ?? ?cre(q); ?? ?printf("输入三个数\n"); ?? ?for (int a = 3; a > 0; a--) ?? ?{ ?? ??? ?inq(q); ?? ?} ?? ?int i; ?? ?do ?? ?{ ?? ??? ?printf("1长度2出队3取头\n"); ?? ??? ?scanf("%d", &i); ?? ??? ?switch (i) ?? ??? ?{ ?? ??? ?case 1:printf("长度为%d\n", len(q)); break; ?? ??? ?case 2:printf("队头元素:%d\n", lea(q)); break; ?? ??? ?case 3:printf("队头:%d\n", getfront(q)); break; ?? ??? ?} ?? ?} while (1); ?
|