#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)释放链队
相关推荐
软 件 学 院 上 机 实 验 报 告 课程名称: 数据结构 实验项目: 队列的应用 实 验 室: 耘 慧420 姓 名: 学 号 专业班级: 实验时间: 2016.11.17 "实验成绩 "评阅教师 " " " " "实验目的及要求 " "(一) 目的 " "1...
输入若干个整数, 以0结束, 利用入队的操作生成一个循环队列, 求该队列的长度。
了解和掌握队列的逻辑结构,掌握串的基本算法及相关的应用。
用C++实现的队列的操作。 cout入队"; cout出队"; cout判空"; cout求队长"; cout退出";
#资源达人分享计划#
这是我学数据结构时做的作业,绝对可以运行!纯粹的交流学习,希望可以帮助大家!
数据结构课设——队列程序.pdf
数据结构课设——队列程序.doc
数据结构实验——队列(附程序).pdf
队列的操作 printf("\n\n 1. 输进元素 e 进队列 "); printf("\n\n 2. 出队的一个一值"); printf("\n\n 3. 请输入一个元素进行查找 "); printf("\n\n 4. 结束 ");
数据结构——队列实现银行排队
《数据结构——用C语言描述》以C语言为程序设计语言,采用系列式的叙述方式,引导读者循序渐进地掌握数组、链接表、栈和队列、树与森林、图和堆等不同的数据结构,并系统地介绍了查找和排序的各种实现方法。...
1、掌握队列的类型定义方法。 2、理解和掌握循环队列解决假溢出的方法。 二、实验内容 1、利用循环队列模拟舞伴配对问题:在舞会上,男、女各自排成一队。舞会开始时。依次从男队和女队的队头各出一人配成舞伴。如果...
队列是一种先进先出的数据结构:即插入在表的一端(队尾)进行,删除在表的另一端(队头)进行 与线性表相似,队列也有顺序储存和链式储存两种储存方法;实现方法和代码在此文档中,详细说明见本人博客
数据结构C语言实现系列[4]——队列.pdf
设计一个字符型的链队列;编写队列的进队、出队、读队头元素、显示队列中全部元素程序;设计一个选择式菜单,以菜单方式选择队列的各种基本操作。
用不同的存储结构构成了队列。 即用线性存储结构和链式存储结构构成。
该文件包括堆栈的头文件(Seq开头)和链表的头文件(Lin开头),另外还实现了十进制转化为八进制、对称串判断和带头结点的单循环链表实现链式队列