#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 YES;//本来是return NULL;
}
else
{
temp=q->front;
x=temp->data;
q->front=temp->next;
free(temp);//释放结点所占的内存空间
printf("出栈成功。");
return x;
}
}
int main()
{
linkQueue queue;
init(&queue);
DataType c;
while((c=getchar())!='\n')
{
inQueue(&queue,c);
}
while(!isEmpty(queue))
{
printf("%c ",outQueue(&queue));
}
printf("\n");
return 1;
}
队列进出栈等操作
猜你喜欢
转载自zhangmingwei.iteye.com/blog/1765550
今日推荐
周排行