#include<stdio.h> #include<stdlib.h> typedef char DataType; //定义队列中的结点类型 typedef struct node { DataType data; struct node * next; }qnode; //定义队列的队头和队尾指针 typedef struct { qnode * front,*rear; }linkQueue; //初始化队列 void init(linkQueue *q) { q->front=q->rear=NULL; } //判断队列是否为空 int isEmpty(linkQueue q) { return NULL==q.front; } //元素入队 void inQueue(linkQueue *q,DataType e) { qnode * node; node=(qnode *)malloc(sizeof(qnode));//新增一个结点 node->data=e; node->next=NULL; if(isEmpty(*q))//判断是不是第一个元素 { q->front=q->rear=node; } else { q->rear->next=node; q->rear=node; } } //元素出队 DataType outQueue(linkQueue *q) { DataType x; qnode *temp; if(isEmpty(*q)) { printf("It's empty,can't delete !"); return NULL; } else { temp=q->front; x=temp->data; q->front=temp->next; free(temp);//释放结点所占的内存空间 return x; } } void main() { linkQueue queue; init(&queue); DataType c; while((c=getchar())!='\n') { inQueue(&queue,c); } while(!isEmpty(queue)) { printf("%c ",outQueue(&queue)); } printf("\n"); }
队列的链式实现
最新推荐文章于 2021-02-02 17:38:38 发布