数据结构的C实现_链式队列

原创 2012年03月22日 18:38:42
//编译环境 visual studio 2008,win32 console application.

//LinkQueue.c

//带头节点的链式队列
#include <stdio.h>
#include <stdlib.h>
#define    OK 1
#define ERROR 0
#define OVERFLOW -2
typedef char elemType;//元素类型

typedef struct _QNode
{
elemType data;
struct _QNode *next;
}QNode;//节点类型

typedef struct
{
QNode *front;//
QNode *rear;
}LinkQueue;//队列类型

//初始化队列
int InitQueue(LinkQueue *q)
{
q->front=q->rear=(QNode *)malloc(sizeof(QNode));
if(!q->front) exit(OVERFLOW);
q->front->next=NULL;
return OK;
}
//销毁队列
int DestroyQueue(LinkQueue *q)
{
while(q->front)
{
q->rear=q->front->next;
free(q->front);
q->front=q->rear;
}
return OK;
}
//队尾插入元素e
int EnQueue(LinkQueue *q,elemType e)
{
QNode *p=(QNode *)malloc(sizeof(QNode));
if(!p) exit(OVERFLOW);
p->data=e;
p->next=NULL;
q->rear->next=p;
q->rear=p;
return OK;
}
//删除队头元素,并打印其值
int DeQueue(LinkQueue *q)
{
QNode *p=q->front->next;//因为带头节点,所以队头是头节点的后一个元素
if(q->front==q->rear) return ERROR;
printf("已删除队头元素%c\n",p->data);
q->front->next=p->next;
if(q->rear==p) q->rear=q->front;
free(p);
return OK;
}
//遍历队列
void TraverseQueue(LinkQueue *q)
{
QNode *p=q->front->next;
if(q->front==q->rear)
printf("队列为空\n");
else
{
printf("队列中的元素为:\n");
while(p!=q->rear)
{
printf(" %c",p->data);
p=p->next;
}
printf(" %c",q->rear->data);
printf("\n");
}
}

void main()
{
LinkQueue *q=(LinkQueue *)malloc(sizeof(LinkQueue));
InitQueue(q);
TraverseQueue(q);
printf("队尾插入元素.....\n");
EnQueue(q,'a');
EnQueue(q,'b');
EnQueue(q,'c');
EnQueue(q,'d');
TraverseQueue(q);
printf("删除队首元素...\n");
DeQueue(q);
TraverseQueue(q);
}


数据结构(严蔚敏)之六——链式队列c语言实现

实验: 编写一个程序实现链队列的各种基本运算,并在此基础上设计一个主程序,完成如下功能: (1)初始化并建立链队列 (2)入链队列 (3)出链队列 (4)遍历链队列   分析: 队列的...

数据结构-链式队列

  • 2012年03月19日 22:12
  • 3KB
  • 下载

数据结构--链式队列

  • 2016年09月12日 15:08
  • 3KB
  • 下载

数据结构 - 队列的链式实现

队列的链式实现1 队列的链式存储表示 队列的链式存储结构简称为链队列,它是限制在表头进行删除操作和表尾进行插入操作的单链表。 需要两类不同的结点:数据元素结点,队列的队首指针和...

数据结构 链式队列 源代码

  • 2012年05月02日 15:46
  • 2KB
  • 下载

数据结构基础(14) --链式队列的设计与实现

链式队列是基于单链表的一种存储表示, 其形状如下图所示:       (队列的队头指针指向单链表的第一个结点, 队尾指针指向单链表的最后一个结点, 注意没有无用的空[头/尾]节点)...

看数据结构写代码(15)链式队列的实现(总结篇)

队列 和 栈 是 一种 受限制的 线性表。所以 他们的 实现方式 都 相差 无几。之前有过  链栈 和 链式线性表 的 实现经验,自然 写 链队 ,也毫无问题。 下面详细讲解每一段代码 的技术要点 ...

数据结构之队列的链式表示及其实现

记录一下自己学习过程中写的代码。以下是我看严蔚敏老师的数据结构教材后,结合教材所讲用C语言实现了关于队列的链式表示及其实现的基本操作,供以后复习所用。本程序建立的队列是一个链式队列,在队列建立之初,队...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构的C实现_链式队列
举报原因:
原因补充:

(最多只允许输入30个字)