#includeiostream
創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為平定等服務(wù)建站,平定等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為平定企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
using namespace std;
template typename T
struct Node
{
T data;
struct Node *next;
};
template typename DATA
class cycle_queue
{
public:
NodeDATA *head;//隊列頭,不保存數(shù)據(jù)
NodeDATA *end;//隊列尾,不保存數(shù)據(jù)
unsigned int size;
cycle_queue()
{
head=new NodeDATA();
end=new NodeDATA();
size=0;
}
void push_back(DATA d)//入隊列
{
NodeDATA *tmp;
tmp=new NodeDATA;
tmp-data=d;
if(size==0)
{
head-next=tmp;
end-next=tmp;
tmp-next=tmp;
}
else
{
end-next-next=tmp;
end-next=tmp;
tmp-next=head-next;
}
++size;
}
DATA front()//取隊頭元素,不負(fù)責(zé)檢查是否為空
{
DATA re;
if(size!=0)
re=head-next-data;
return re;
}
void pop()//隊頭元素出列,不負(fù)責(zé)檢查是否為空
{
if(size!=0)
{
NodeDATA *tmp;
tmp=head-next;
head-next=head-next-next;
end-next-next=head-next;
delete tmp;
--size;
}
}
bool empty()//隊列判空
{return size==0;}
};
int main()
{
int a[10]={10,9,8,7,6,5,4,3,2,1};
class cycle_queueint cq;
short i;
for(i=0;i!=10;++i)
cq.push_back(a[i]);
cout"**************"endl;
while(!cq.empty())
{
coutcq.front()" ";
cq.pop();
}
cini;
return 0;
}
//定義一個int型數(shù)組que,長度為N(常量切大于2).
int?que[N];
int?rear=0,front=0;?//隊尾?隊頭
判斷隊列已滿:
if((front+1)%N==rear%N)??//成立則隊列已滿
判斷隊列為空
if((rear==front))?//成立則隊列空
入隊(一般在入隊前判斷隊列是否已滿)
//將val入隊
que[front++]=val;
front%=N;
出隊(一般在出隊前判斷隊列是否為空)
rear=(rear+1)%N;
下一個要出隊的元素(一般先判斷是否為空)
que[rear];
//定義隊列結(jié)構(gòu)體
typedef struct Qnode
{
int data;
struct Qnode *next;
} Queue , *QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
} linkQnode;
//創(chuàng)建一個隊列
initQueue (linkQnode *q)
{
q - front = q - rear = (QueuePtr) malloc (sizeof (Queue));
if (!q - front) exit (0);
q - front - next = NULL;
}
//入隊列
EnterQueue (linkQnode *q , int item)
{
QueuePtr p;
p = (QueuePtr) malloc (sizeof (Queue));
if (!p) exit (0);
p - data = item;
p - next = NULL;
q - rear - next = p;
q - rear = p;
}
//出隊列
DelQueue (linkQnode *q , int *item)
{
QueuePtr p;
if (q - front = q - rear) return;
p = q - front - next;
*item = p - data;
q - front - next = p - next;
if (q - rear == p)
q - rear = q - front;
free (p);
}