数据结构---队列的实现和个人分析

 队列的一个显著的特征正好的和栈是相反的,它是按照先进先出(FIFO)的方式存储和检索元素,这就是说,对线插入队列的要先删除。还有就是队列是限制在两端进行插入和删除操作的线性表,允许进行存入操作的一端就叫“队尾”,允许进行删除操作的就是“对头”。当线性表中没有元素时,称为“空队“。那么,我们可以吧队列想象地理解成银行办理业务的一队人。

数据结构---队列的实现和个人分析_第1张图片

  下面介绍顺序队列的定义和实现(以前写的代码)

/*sequeue.h*/
#define N 8

typedef int datatyde;
typedef struct {
	datatyde data[N];
	int front,rear;
 }sequeue;

sequeue *Createsequeue();
int Emptysequeue(sequeue *sq);
int Fullsequeue(sequeue *sq);
void Clearsequeue(sequeue *sq);
void Ensequeue(sequeue *sq,datatyde x);
datatyde Desequeue(sequeue *sq);
/*sequeue.c
#include "sequeue.h"
#include <stdio.h>
#include <stdlib.h>



sequeue *Createsequeue()
{
	sequeue *sq;
	sq=(sequeue *)malloc(sizeof(sequeue));
  sq ->	front = sq -> rear=0;
	return sq;
}

int Emptysequeue(sequeue *sq)
{
	return (sq -> front == sq -> rear);
}
int Fullsequeue(sequeue *sq)
{
	return ((sq -> rear+1)%N == sq -> front);
}
void Clearsequeue(sequeue *sq)
{
   sq -> front = sq -> rear;
	return;
}
void Ensequeue(sequeue *sq,datatyde x)
{
	sq -> rear = (sq -> rear+1) % N;
	sq -> data[sq -> rear]=x;
}

datatyde Desequeue(sequeue *sq)
{
  sq -> front = (sq -> front + 1) % N;
 return (sq ->data[sq -> front]);
}


下面是链式队的定义和实现

 队列的定义的和实现和栈的定义和实现差不多。好多函数接口在单链表定义的时候已经实现,具体可以参照单链表的实现和定义。单链表博客链接:点击打开链接。

    

/*queue.h*/

#ifndef QUEUE_H
#define QUEUE_H

#include <stdlib.h>
#include "list.h"

/*inplement as linked lists */
typedef List Queue;

/*Public inerface */
#define queue_init list_init 
#define queue_destroy list_destory 

int queue_enqueue(Queue *queue,const void *data);
int queue_dequeue(Queue *queue,void *data);
#define queue_peek(queue)  ((queue) ->head == NULL? NULL:(queue)->head->data)
#define queue_size list_size

#endif


 

/*queue.c*/

#include <stdlib.h>

#include "../include/list.h"
#include "../include/queue.h"

/*queue_enqueue */
int queue_enqueue(Queue * queue, const void * data)
{
    return list_ins_next(queue, list_tail(queue),  data);
}

/*queue_dequeue*/
int queue_dequeue(Queue * queue, void * data)
{
    return list_rem_next(queue, NULL, data);
}



 

 

你可能感兴趣的:(数据结构,算法,linux,linux,linux,队列)