佇列的基本操作

2021-08-19 23:15:39 字數 3264 閱讀 6737

1.佇列概念

只允許在一端進行插入資料操作,在另一端進行刪除操作的特殊線性表

進行插入操作的一端稱為隊尾(入佇列)

進行刪除操作的一端稱為隊頭(出佇列)

佇列具有先進先出的特性(fifo)

2.鏈式佇列

#include #include #include #include //鏈式佇列(即佇列的底層實現為鍊錶),煉表頭結點為佇列的對頭

typedef int datatype;

typedef struct listnode

node,*pnode;

typedef struct squeue

squeue,*psqueue;

//初始化佇列

void squeueinit(psqueue q);

//入佇列

void squeuepush(psqueue q,datatype data);

//出佇列

void squeuepop(psqueue q);

//判空

int squeueempty(psqueue q);

//獲得隊頭元素

datatype squeuefrontdata(psqueue q);

//獲得隊尾元素

datatype squeuereardata(psqueue q);

//檢視佇列長度

int squeuesize(psqueue q);

//銷毀佇列

void squeuedestory(psqueue q);

squeue.c

#define _crt_secure_no_warning 1

#include "squeue.h"

//初始化佇列

void squeueinit(psqueue q)

pnode buynewnode(datatype data)

pnewnode->_pnext = null;

pnewnode->_data = data;

return pnewnode;

}//入佇列

void squeuepush(psqueue q,datatype data)

}//出佇列

void squeuepop(psqueue q)

//判空

int squeueempty(psqueue q)

//獲得隊頭元素

datatype squeuefrontdata(psqueue q)

//獲得隊尾元素

datatype squeuereardata(psqueue q)

//檢視佇列長度

int squeuesize(psqueue q)

} return count;

}//銷毀佇列

void squeuedestory(psqueue q)

}}

test.c

squeue q;

squeueinit(&q);

squeuepush(&q,1);

squeuepush(&q,2);

squeuepush(&q,3);

squeuepush(&q,4);

squeuepush(&q,5);

squeuepush(&q,6);

printf("front is %d\n",squeuefrontdata(&q));

printf("rear is %d\n",squeuereardata(&q));

printf("size is %d\n",squeuesize(&q));

squeuepop(&q);

squeuepop(&q);

printf("front is %d\n",squeuefrontdata(&q));

printf("rear is %d\n",squeuereardata(&q));

printf("size is %d\n",squeuesize(&q));

squeuedestory(&q);

3.迴圈佇列

queue.h

//迴圈佇列

#pragma once

#include #include #include #define max_size 8

typedef int datatype;

typedef struct queue

queue,*pqueue;

//佇列初始化

void queueinit(pqueue q);

//入佇列

void queuepush(pqueue q,datatype data);

//出佇列

void queuepop(pqueue q);

//佇列元素的個數

int queuesize(pqueue q);

//佇列判空

int queueempty(pqueue q);

//獲得隊頭元素

datatype queuefront(pqueue q);

//獲得隊尾元素

datatype queuerear(pqueue q);

queue.c

#include "queue.h"

//佇列初始化

void queueinit(pqueue q)

//入佇列

void queuepush(pqueue q,datatype data)

//出佇列

void queuepop(pqueue q)

//佇列元素的個數

int queuesize(pqueue q)

//佇列判空

int queueempty(pqueue q)

//獲得隊頭元素

datatype queuefront(pqueue q)

//獲得隊尾元素

datatype queuerear(pqueue q)

test,c

#include "squeue.h"

int main()

佇列的基本操作

include stdafx.h includeusing namespace std typedef struct node typedef struct queue queue insertqueue queue q,char value return q queue deletequeue q...

佇列的基本操作

本程式主要是實現了迴圈佇列的基本操作,包括insert,remove,peek,size等操作 package demo3 class queue 插入操作 public void insert long j quearray rear j 佇列是在隊尾插入 nitems 刪除 public lon...

佇列的基本操作

鏈式儲存 typedef int qelemtype typedef int status 具體資料型別具體定義 typedef struct qnode 佇列結點結構體 qnode,queueptr typedef struct 鏈佇列型別 linkqueue status initqueue l...