C语言实现队列基本操作-初始化,入队,出队,打印,删除


C语言实现队列基本操作-初始化,入队,出队,打印,删除

C语言:

#include <stdio.h> 
#include <stdlib.h>

// 队列的实现
#define OVERFLOW -2 
#define OK 1
#define ERROR 0

typedef int Status;
typedef int QElemType;
 
typedef struct QNode{
	QElemType data;
	struct QNode * next;
}QNode, *QueuePtr;
typedef struct {
	QueuePtr front;            // 队头指针 
	QueuePtr rear;             // 队尾指针 
}LinkQueue;

Status InitQueue(LinkQueue &Q)
{
	// 构造一个空队列
	Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
	if(!Q.front) exit(OVERFLOW);         // 分配存储失败 
	Q.front->next = NULL;
	return OK;
}

Status DestroyQueue(LinkQueue &Q)
{
	// 销毁队列 Q
	while(Q.front){
		Q.rear = Q.front->next;
		free(Q.front);
		Q.front = Q.rear;
	} 
	return OK;
}

Status EnQueue(LinkQueue &Q, QElemType e)
{
	// 插入元素 e 为 Q 的新的队列元素 
	QueuePtr p = (QueuePtr)malloc(sizeof(QNode));
	if(!p) exit(OVERFLOW);          // 存储分配失败
	p->data = e;
	p->next = NULL;                // 队尾 next == NULL,有 data 
	Q.rear->next = p;
	Q.rear = p;                    // 更新队尾 
	return OK; 
}

Status DeQueue(LinkQueue &Q, QElemType &e)
{
	// 若对头不空,则删除对头元素,用 e 返回其值,并返回 OK,否则返回 ERROR
	if(Q.front == Q.rear) return ERROR;
	QueuePtr p = Q.front->next;         // Q.front 没有 data, next != NULL(除非空队列) 
	e = p->data;
	Q.front->next = p->next;            // 更新队头 
	if(Q.rear == p) Q.rear = Q.front;   // 队列为空了 
	free(p);
	return OK;
}

Status PrintQueue(LinkQueue Q)
{
	// 打印队列 Q 全部元素 
	QueuePtr p = Q.front;
	while(p->next){
		printf("%d ", p->next->data);
		p = p->next;
	}
	printf("\n"); 
}
int main()
{
	LinkQueue q;
	InitQueue(q);       // 初始化队列
	
	QElemType e1 = 666, e2 = 888;    // 向队列添加元素 
	EnQueue(q, e1);
	EnQueue(q, e2);
	printf("队列元素: "); 
	PrintQueue(q);        // 打印队列 
	
	QElemType e3;
	DeQueue(q, e3);
	printf("删除元素为: %d \n", e3);
	printf("队列元素: "); 
	PrintQueue(q);        // 打印队列 
	
	DestroyQueue(q);      // 删除队列 
	
	return 0;
}
/* Code Running Results 队列元素: 666 888 删除元素为: 666 队列元素: 888 */

栈和单链线性表基本操作实现:

单链线性表


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM