`

数据结构——队列

阅读更多
#include <stdio.h>
#include <malloc.h>

typedef char ElemType;
typedef struct Node{   //队列中的结点
	ElemType data;
	struct Node *next;
} QNode;

typedef struct{      
	QNode *front;     //指向队列头
	QNode *rear;      //指向队列尾
}Queue;

void Init(Queue *&q){
	q=(Queue *)malloc(sizeof(Queue));
	q->front=q->rear=NULL;
}

void Destroy(Queue *&q){
    QNode *p=q->front,*r;
	while(p!=NULL){
		r=p->next;
		free(p);
		p=r;
	}
	free(q);
}

int Length(Queue *q){
	int n=0;
	QNode *p=q->front;
	while (p!=NULL){
		n++;
		p=p->next;
	}
	return n;
}

int isEmpty(Queue *q){
	return q->rear==NULL?1:0;
}

void Enter(Queue *&q,ElemType e){
	QNode *s;
    s=(QNode *)malloc(sizeof(QNode));
	s->data=e;
	s->next=NULL;
    if (q->rear==NULL)		//若链队为空,则新结点是队首结点又是队尾结点
		q->front=q->rear=s;
	else{
		q->rear->next=s;  //将s链到队尾
		q->rear=s;
	}
}

int Leave(Queue *&q,ElemType &e){
	QNode *t;
	if (q->rear==NULL)		//队列为空
		return 0;
	if (q->front==q->rear){  //队列只有一个结点
		t=q->front;
		q->front=q->rear=NULL;
	}
	else{					//队列有多个结点
		t=q->front;
		q->front=q->front->next;
	}
	e=t->data;
    free(t);
	return 1;
}

void main()
{
	ElemType e;
	Queue *q;
	printf("(1)初始化链队q\n");
	Init(q);
	printf("(2)依次进链队元素a,b,c\n");
	Enter(q,'a');
	Enter(q,'b');
	Enter(q,'c');
	printf("(3)链队为%s\n",(isEmpty(q)?"空":"非空"));
	if (Leave(q,e)==0) 
		printf("队空,不能出队\n");
	else
		printf("(4)出队一个元素%c\n",e);
	printf("(5)链队q的元素个数:%d\n",Length(q));
	printf("(6)依次进链队元素d,e,f\n");
	Enter(q,'d');
	Enter(q,'e');
	Enter(q,'f');
	printf("(7)链队q的元素个数:%d\n",Length(q));
	printf("(8)出链队序列:");
	while (!isEmpty(q))
	{	Leave(q,e);
		printf("%c ",e);
	}
	printf("\n");
	printf("(9)释放链队\n");
	Destroy(q);
}

 运行结果:

(1)初始化链队q
(2)依次进链队元素a,b,c
(3)链队为非空
(4)出队一个元素a
(5)链队q的元素个数:2
(6)依次进链队元素d,e,f
(7)链队q的元素个数:5
(8)出链队序列:b c d e f
(9)释放链队

分享到:
评论

相关推荐

    数据结构——队列的应用.doc

    数据结构中的队列是一种线性数据结构,它遵循“先进先出”(FIFO, First In First Out)的原则。在本实验中,我们主要探讨了队列的应用,特别是在实现杨辉三角输出上的应用。 首先,我们需要理解循环队列。循环队列...

    数据结构——队列 求队列长度 C语言

    输入若干个整数, 以0结束, 利用入队的操作生成一个循环队列, 求该队列的长度。

    数据结构——队列的实现

    队列是一种重要的线性数据结构,其工作原理类似于现实生活中的排队等候,遵循“先进先出”(FIFO)的原则。本篇文章将深入探讨队列的逻辑结构,以及如何在实际应用中实现队列。 队列的基本概念: 1. 队头:队列的...

    算法和数据结构——队列.pdf

    队列是一种基础且重要的数据结构,它遵循“先进先出”(FIFO,First In First Out)的原则。在队列中,元素的插入(入队)发生在队尾,而删除(出队)则发生在队头。这个概念可以类比于现实生活中人们排队购物的情景...

    数据结构——队列的基本操作

    用C++实现的队列的操作。 cout入队"; cout出队"; cout判空"; cout求队长"; cout退出";

    数据结构——车厢重排——队列问题

    ### 数据结构——车厢重排——队列问题 #### 核心知识点解析 ##### 1. 数据结构基础 在计算机科学中,数据结构是用于组织、管理以及存储数据的有效方式,以便能够高效地进行数据访问与修改操作。本案例中涉及的...

    《数据结构——C++实现》(第二版)课本源代码

    《数据结构——C++实现》(第二版)是一本经典的计算机科学教材,专注于介绍各种数据结构及其在C++编程语言中的实现。这本书的核心是通过实际的代码示例帮助读者理解和掌握数据结构的基本概念,这对于任何想要深入...

    数据结构课设——队列程序.pdf

    数据结构课设——队列程序.pdf

    C++数据结构队列——离散事件模拟

    二、数据结构——队列 队列是一种线性数据结构,遵循“先进先出”(FIFO)原则。在银行取款系统模拟中,队列可以用来表示等待服务的客户。当新客户到来时,他们被添加到队尾;而当柜员为前一个客户完成服务后,下一...

    合工大数据结构实验 队列.zip

    在本实验中,我们将聚焦于一种基础但至关重要的数据结构——队列。队列是一种线性数据结构,遵循“先进先出”(FIFO,First In First Out)的原则,它的操作类似于现实生活中的排队等待。队列在计算机系统中有着广泛...

    数据结构实验——队列(附程序).pdf

    数据结构实验——队列(附程序) 数据结构实验报告——队列 一、实验目的: 1. 了解队列的特性。 2. 掌握队列的顺序表示和实现。 3. 掌握队列的链式表示和实现。 二、实验内容: 实验 3.3 队列的顺序表示和实现 ...

    数据结构入门——队列的实现.rar

    在这个"数据结构入门——队列的实现.rar"的压缩包中,我们主要关注的是队列这一基础但重要的数据结构。队列,正如其名,模拟了现实生活中的排队现象,遵循“先进先出”(FIFO, First In First Out)原则。这意味着最...

    数据结构——堆栈和队列

    总的来说,这个压缩包提供了关于数据结构——堆栈和队列的C语言实现,以及额外的数字转换和字符串处理功能。这些基础知识对于理解和编写高效的计算机程序至关重要。通过学习和理解这些内容,开发者能够更好地解决...

    数据结构——C语言描述 课后答案 整理 较完整版

    ### 数据结构——C语言描述知识点解析 #### 一、数据结构与C语言描述概览 数据结构是指在计算机科学中,用于组织、管理和存储数据的一种特殊格式,它能够有效地访问和修改数据。C语言是一种广泛使用的编程语言,以...

    数据结构---队列的应用--c实现

    ### 数据结构——队列的应用与C语言实现 #### 背景介绍 本文将通过一个经典的算法问题“农夫过河”来探讨队列在实际编程中的应用,并使用C语言进行实现。这个问题不仅考验对数据结构的理解,还涉及到位运算等计算机...

    数据结构-队列实现银行排队

    数据结构——队列实现银行排队

    《数据结构——用C语言描述(第二版)》-宁正元-电子教案

    《数据结构——用C语言描述(第二版)》是由著名计算机教育专家宁正元编著的一本经典教材,主要面向计算机科学与技术专业的学生以及对数据结构感兴趣的编程爱好者。本书深入浅出地介绍了数据结构的基本概念、原理和...

    数据结构实验——队列子系统

    在这个实验中,我们专注于队列,一种线性数据结构,它的主要特点在于数据的先进先出(FIFO)原则。队列通常被比喻为排队等待服务的人群,最先到达的人最先接受服务,而后来的人则需等待。 实验的目标是掌握队列的...

Global site tag (gtag.js) - Google Analytics