简单队列(数组实现) #include <stdio.h> #define MAX_SIZE 10 int queue[MAX_SIZE]; int rear = -1; /* 队尾 */ int front = -1; /* 队头 */ int queue_in(int value) { if(rear >= MAX_SIZE) { return 0; } queue[++rear] = value; return 1; } int queue_out(int* value) { if(rear == front) { return 0; } *value = queue[++front]; return 1; } int main(int argc, char* argv[]) { int temp; while(1) { printf("1:存;2:取 =>"); //scanf("%d",&temp); scanf_s("%d",&temp); fflush(stdin); if(1 == temp) { printf("please input an int number: "); //scanf("%d", &temp); scanf_s("%d",&temp); fflush(stdin); if(1 == queue_in(temp)) { printf("成功存入!/n"); }else { printf("队列已满!/n"); } }else if(2 == temp) { if(0 == queue_out(&temp)) { printf("队列已空/n"); }else { printf("取得值 %d/n",temp); } } } return 0; } 循环队列(数据实现) #include <stdio.h> #define MAX_SIZE 10 int queue[MAX_SIZE]; int rear = -1; /* 队尾 */ int front = -1; /* 队头 */ int queue_in(int value) { if(front == -1 && rear == MAX_SIZE - 1 || rear + 1 == front) { return 0; } rear++; if(rear == MAX_SIZE) { rear = 0; } queue[rear] = value; return 1; } int queue_out(int* value) { if(rear == front) { return 0; } front++; if(front == MAX_SIZE - 1) { front = 0; } *value = queue[front]; return 1; } int main(int argc, char* argv[]) { int temp; while(1) { printf("1:存;2:取 =>"); //scanf("%d",&temp); scanf_s("%d",&temp); fflush(stdin); if(1 == temp) { printf("please input an int number: "); //scanf("%d", &temp); scanf_s("%d",&temp); fflush(stdin); if(1 == queue_in(temp)) { printf("成功存入!/n"); }else { printf("队列已满,存入失败!/n"); } }else if(2 == temp) { if(0 == queue_out(&temp)) { printf("队列已空/n"); }else { printf("取得值 %d/n",temp); } } } return 0; } 队列(链表实现) #include <stdio.h> #include <stdlib.h> typedef struct _queue { int data; struct _queue* next; }QUEUE; QUEUE* rear = NULL; QUEUE* front = NULL; int queue_in(int value) { QUEUE* queue = (QUEUE*)malloc(sizeof(QUEUE)); if(queue == NULL) { return 0; } queue->data = value; queue->next = NULL; if(front == NULL) { front = queue; }else { rear->next = queue; } rear = queue; return 1; } int queue_out(int* value) { QUEUE* temp = NULL; if(front == NULL) { return 0; } temp = front; front = front->next; *value = temp->data; free(temp); return 1; } int main(int argc, char* argv[]) { int temp; while(1) { printf("1:存;2:取 =>"); //scanf("%d",&temp); scanf_s("%d",&temp); fflush(stdin); if(1 == temp) { printf("please input an int number: "); //scanf("%d", &temp); scanf_s("%d",&temp); fflush(stdin); if(1 == queue_in(temp)) { printf("成功存入!/n"); }else { printf("队列已满,存入失败!/n"); } }else if(2 == temp) { if(0 == queue_out(&temp)) { printf("队列已空/n"); }else { printf("取得值 %d/n",temp); } } } return 0; }