就是线性代表的一端插入另一端删除,它是一种先进先出的first in first out这这fifo的这样一种结构。比如说我们对立了这样一个图,我们呢a1是对头。a an这个部分呢,是对尾我们出对了,就从我们a1这样一个部分出对,然后我们入队了,就从我们an这样一个位置出对。表尾呢,称为对尾,表头呢,称为对头,插入元素,称为入对,
因此呢,空队列的判重条件呢,是头指针和尾指针呢,都指向头结点,那么比如说我们的头指针呢,指向头结点,然后指向我们的对头,那么这样一个部分。面对的结构特节节点结构呢,我们看一下它的这样一个语句,看断一下,看它的结构的语句的结构,部分type defy struct q node element type data struct q no de星号next q no de星号。qp tr这是定义了一个数。数据类型,
一个结构体的这样一个名称q no de和一个指向结构体的指针的这样一个部分qp tr。那么,将对头和对尾指针呢封装在一起,作为链对列的数据类型,那么我们来看一下它的定义type define。q ptr front rear link two将对头对尾指针封装在一起。那么就是link q那么定义一个这样一个树结构体的,这样一个名结构体的,这样一个类型,那么就是我们的link q。那么,比如说有这样一个link q。q front.front.指向我们的头节点,
然后呢?指向我们的这样一个元素。rear呢指向队尾的这样一个节点,那么指向了单链表的最后一个节点,那么这是我们的链队列的这样一个。结构的运用方式。好吧,我们再看一下队列的基本操作,在链队列中的实现。面对队列的初始化操作,比如说state以initial q构造一个空节点的这样一个。空队列q front=q rear。等于。qp trm mlk it塞入我们q no de。那么,
分配一个存储空间,那么将将它的这个地址呢赋给我们的维指针和我们的头指针。那么,并且呢,头指针呢?指向的下一个。指针呢?等于null。这是我们的队列的初始化操作,那么销毁队列的操作呢?是我们的这样一个。status destroy.q while q指向front q指向rear=q指向front指向next。把q指向的front的这样一个next呢,赋给我们的rear。
结束掉这样一个循环,那么就是销毁队列的操作,那么接下来呢?我们看一下。插入操作在链队列中的实现,where的in q。qp trp.p=qptrmrk的size of q no de ifp=null print。f分配失败x负1p指向data=EP指向next。零到q指向real指向next=pq指向real=p。那么我们看一下插入操作在链队列中的实现,那么我们插入操作呢?那么首先呢,要我们为这样一个节点呢?分配一个存储单元,
那么这里呢qpr market side of q load分配一个节点,这么一个存储单元让p呢指向它。那么ifp=null,如果qp又控制成了,那么。printf分配失败,返x的负一,那么否则呢?p指向data=e,那么把e呢?那么赋给我们p指向data,然后null呢?等于p指向next。next p等于指向next=now把now呢赋给p指向next,然后呢q=real=next=p。
接下来我们看一下删除操作在链队列中的实现,那么我们删除操作呢?是在对头进行操作,以离销DQ。qp trp if q指向front=q指向,where那么retire force就是说如果呢?我们的这样一个节点,如果我们这个队列呢?是一个空队列。q指向front=q指向rear,那么我们这个时候呢,返回一个错误,那么否则呢p=q。指向real指向next,那么就把。
那么这是我们循环队列判空判满的这样一个情况。那么我们看一下队列的顺序,存储结构队列呢,是特殊的线性表,其顺序存储呢,与线性表的顺序存储类似。井号defy x size 100对应最大队列长度type defy struct q element type信号element element。存储队列元素的数组int frontin t rear,那么这是我们的头指针和我们的尾指针。循环队列的基本操作呢,可以有这样一些使用的方式in tin一些issue q构造一个空队列q。q呢指向element。那么等于我们的q。m的type信号。marck it.
mma xq size size of.q element type.那么,这是分配一个存储空间。那么q=q指向element=0,那么分配空间失败,分配空间失败,那么return 0,那么否则呢?q=front=q指向rear rear=0,那么就是一个空队列,最后呢?返回一个一。那么,这是队列的初始值。
接下来我们看一下插入操作,在循环队列中的实现in tin q。if q加指向real+1模上m max size=q front,那么当我们的对为?对头,当我们的对头指针呢?在对尾指针的下一位置。那么这个时候呢?那么,当对头指针。在对尾指针。在下一位置的时候呢。这个时候对满那么不能入队。那么另外呢?那么否则呢?
q指向element q指向real=e在对尾的插入元素。q指向rear=q指向m rear+1 max size。那么维指针呢?加一那么考虑到循环队列呢?那么维指针呢?加一还要磨上这个max size,最后retell 1就是插入操作这个实现。接下来我们看一下循环操,循插入操操删除操作,在循环队列中的实现in TD q if q指向front=rear。那么就是头指针指向为指针,那么就说明了对为空那么返回一个错误,那么对列为空那么返回一个错误,那么否则呢,星号e=q指向element front。