链队列的入队、出队算法

#include
#include

typedef struct Qnode  
{
     
	int data;
	struct Qnode *next; 
}Qnode;  

typedef struct
{
     
	struct Qnode *front;
	struct Qnode *rear;
}LinkQueue;

LinkQueue *Q;

int main()
{
     
	void EnQueue(int e);
	int DeQueue();
	int i;
	Q = (LinkQueue *)malloc(sizeof(LinkQueue));
	Q->front = (Qnode *)malloc(sizeof(Qnode));
	Q->rear = Q->front;
	for(i=0; i<10; i++)
		EnQueue(i);
	printf("pop first 5 elements\n");
	for(i=0; i<5; i++)
		printf("The %d element is %d\n",i+1,DeQueue());   
	return 0;
}

void EnQueue(int e)
{
     
	Qnode *p;
	p = (Qnode *)malloc(sizeof(Qnode));
	if(!p)
		exit(1);  //存储分配失败
	p->data = e;
	p->next = NULL;
	(*Q).rear->next = p;
	(*Q).rear = p;
}

int DeQueue()
{
     
	Qnode *p;
	int e;
	if(Q->front == Q->rear)  //空队列
		exit(1);
	p = (*Q).front->next;  //删除p结点(队头),Q->front不作为删除对象
	e = p->data;
	(*Q).front->next = p->next;
	if((*Q).rear == p)
		(*Q).rear = (*Q).front;
	free(p);
	return e;
}

程序运行结果
链队列的入队、出队算法_第1张图片
如果感觉不错,那就给我点个赞吧(ノ ̄▽ ̄)

你可能感兴趣的:(数据结构与算法,C语言描述,C语言,数据结构与算法,链队列)