#include<stdio.h>
#include<stdlib.h>
typedef struct LNode *List; //用链表存储每一个元素
struct LNode{
int data; //储存元素
List Next; //指向下一个元素的指针
};
typedef struct QNode *Queue;
struct QNode{
List rear; //指向队列尾的指针
List front; //指向队列头的指针
};
/* 创建一个队列 */
Queue CreateQ(){
Queue Q = (Queue)malloc(sizeof(struct QNode));
Q->rear = Q->front = NULL;
return Q;
}
/* 队列元素的插入 */
void Insert(Queue Q, int X){
List L = (List)malloc(sizeof(struct LNode));
L->data = X;
L->Next = NULL;
if(Q->rear == NULL)
Q->rear = Q->front = L;
else{
Q->rear->Next = L;
Q->rear = Q->rear->Next;
}
}
/* 队列元素的删除 */
int DeleteQ(Queue Q){
List frontcell;
int X;
if(Q->front == NULL){
printf("ERROR\n");
return -1;
}
frontcell = Q->front;
if(Q->front == Q->rear)
Q->front = Q->rear = NULL;
else
Q->front = Q->front->Next;
X = frontcell->data;
free(frontcell);
return X;
}
int main(void){
int N,i,X;
scanf("%d",&N);
Queue Q = CreateQ();
char ch;
for(i=0;i<N;i++){
getchar();
scanf("%c",&ch);
getchar( );
if(ch == 'I'){ //读入字符是 I ,插入一个元素
scanf("%d",&X);
Insert(Q,X);
}
if(ch == 'O'){ //读入字符是 O ,删除一个元素
printf("%d ",DeleteQ(Q));
}
}
return 0;
}
队列的链式存储实现
最新推荐文章于 2023-01-02 18:38:24 发布