队列的链表实现

原创 2013年12月05日 00:14:08

queue.h

#ifndef QUEUE_H_INCLUDED
#define QUEUE_H_INCLUDED

typedef  int  ElementType;

struct  queuenode;
typedef struct  queuenode  *Node;
typedef  Node  QueuePtr;
struct  queuenode
{
    ElementType data;
    QueuePtr  next;
};

struct  queuerecord;
typedef  struct queuerecord  *Queue;
struct  queuerecord
{
    QueuePtr  Front;
    QueuePtr  Rear;
};

Queue  CreatQueue(void);
Queue  EnQueue(ElementType  X, Queue  Q);
Queue  DeQueue(Queue  Q);
ElementType  Front(Queue Q);

#endif // QUEUE_H_INCLUDED

queue.c

#include  <stdio.h>
#include  <malloc.h>
#include  "queue.h"


Queue  CreatQueue(void)
{
    Queue Q=(Queue)malloc(sizeof(struct queuerecord));
    Q->Rear=Q->Front=(QueuePtr)malloc(sizeof(struct queuenode));

    if(Q==NULL)
        printf("out  of  space!!!");
    Q->Front->next=NULL;

    return  Q;
}


Queue  EnQueue(ElementType  X, Queue  Q)
{
    QueuePtr  En;
    En=(QueuePtr)malloc(sizeof(struct queuerecord));
    En->data =X;

    Q->Rear->next=En;
    En->next=NULL;
    Q->Rear=En;

    return Q;
}


Queue  DeQueue(Queue  Q)
{
    QueuePtr  temp=(QueuePtr)malloc(sizeof(struct queuerecord));
    temp=Q->Front->next;
    Q->Front->next=temp->next;
     if(Q->Rear==temp)
        Q->Front =Q->Rear;

    free(temp);

    return  Q;
}


ElementType  Front(Queue Q)
{
    return  Q->Front->next->data;
}

main.c

#include <stdio.h>
#include <stdlib.h>
#include  "queue.c"


int main()
{
    int  c;
    Queue Q=(Queue)malloc(sizeof(struct  queuerecord));
    Q=CreatQueue();

    while((c=getchar())!=EOF)
        Q=EnQueue(c,Q);

    while(Q->Front!= Q->Rear)
    {
        printf("%d \t",Front(Q));
        Q=DeQueue(Q);
    }

    return 0;
}


用链表实现队列--链式队列

/* 一、关于链式队列的约定(目的是在C语言中描述方便) 1.定义: (1)队列是一种先进先出的线性表; (2)它只允许在表的一端进行入队,在另一端进行出队操作。在队列中,允许插入的一...
  • fengel_cs
  • fengel_cs
  • 2016年05月29日 12:22
  • 4421

队列的实现(链表方式)

队列这种结构,其实就跟现实中排队买票类似,先排队的,先买票。队列的特性就是先进先出。 队列的存储有顺序存储和链式存储之分,本文主要介绍如何用链表来实现队列。...
  • Timsley
  • Timsley
  • 2016年11月29日 16:45
  • 2179

利用链表实现队列的Java代码

利用链表实现队列的Java代码佟强 http://blog.csdn.net/microtongQueueNode类是用来表示一个链表节点的类,QueueLinked是链表实现的队列,其中front是...
  • microtong
  • microtong
  • 2009年10月01日 21:56
  • 4431

队列——链表实现

引言:            队列与栈的区别是队列是先进先出的数据结构。为了使得出入队列容易,可以引入队列头指针和队列尾指针。 分析描述:        队列的结点结构。 t...
  • To_Be_IT_1
  • To_Be_IT_1
  • 2014年07月09日 13:38
  • 1310

基于链表实现Java 自定义Queue队列

与栈一样,我们也可以借助单链表来实现队列ADT。同样地,出于效率方面的考虑,我们将以单链表的首(末)节点作为队列的首(末)节点⎯⎯这样,可以回避单链表在尾部进行删除操作时效率低下的缺陷。此外,还需要两...
  • github_27609763
  • github_27609763
  • 2015年06月14日 00:32
  • 1756

队列 queue 的链表实现操作 -C++

队列(queue) (像打饭的排队)掐头去尾 概念:只允许一端进行插入,另一端进行删除操作的线性表。 (先进先出:FIFO,插入的一端是队尾,删除的一端是对头)...
  • SUNSHANGJIN
  • SUNSHANGJIN
  • 2014年08月12日 14:36
  • 2775

Java中队列的实现(2)-使用单向链表以及实现

队列(Queue):是另一种被限制过的线性表,它是固定一端来插入数据元素,另一端只删除元素,也就是说队列中的元素移动是固定的,就像超市收银台一样,一边是进的,一边是出的,而且是先进入的首先获得服务的。...
  • daguairen
  • daguairen
  • 2016年10月06日 19:50
  • 1185

队列的实现(2):用链表实现队列

上一篇文章: http://blog.csdn.net/keheinash/article/details/51125063 利用数组实现了循环队列,这是静态的队列,缺点是需要预设大小,当队列满时...
  • keheinash
  • keheinash
  • 2016年04月13日 15:03
  • 1762

C++实现队列--数组实现和链表实现

队列是一个简单的等待序列,在尾部加入元素时队列加长,在前端删除数据时队列缩短。与栈不同,队列是一种两端的结构:一端用来加入新元素,另一端用来删除元素。因此,元素必须等到排在它之前的所有元素删除之后才能...
  • FreeeLinux
  • FreeeLinux
  • 2016年07月30日 22:14
  • 3563

队列的数组实现与链表实现

队列的说明 队列是一种基本的数据结构。我们平时排队等候服务的时候,是先到的人先接受服务。对于队列这种数据结构,实现的就是一种先进先出(first-int, first-out, FIFO)的...
  • Clown_Zeon
  • Clown_Zeon
  • 2016年06月07日 19:19
  • 2979
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:队列的链表实现
举报原因:
原因补充:

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