導航:首頁 > 編程語言 > python循環隊列的操作

python循環隊列的操作

發布時間:2022-04-14 23:00:12

『壹』 在循環隊列中怎樣實現入隊和出隊操作 數據結構 C語言

入隊操作
功能:將元素 x 插入到Q的隊尾。
演算法:Status EnQueue(SqQueue &Q, QElemType e) {
if ((Q.rear+1) % MaxQsize == Q.front) return ERROR; // 隊列滿
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1) % MaxQsize;
return OK;
}
出隊操作
功能:刪除Q的隊頭元素,並返回其值。
演算法: Status DeQueue(SqQueue &Q, QElemType &e) {
if (Q.front == Q. rear) return ERROR; // 隊列空
e = Q.base[Q.front];
Q.front=(Q.front+1) % MaxQsize;
return OK;
}

『貳』 循環隊列的基本操作

#define MaxSize 5
#include<stdio.h>
#include<malloc.h>
struct queue{
int qu[MaxSize];
int front;
int rear;
int tag; //front==rear時表示隊列滿或空的標志:tag==1表示滿,tag==0表示空
};
struct queue *InitQu()
{struct queue *q;
q=(struct queue *)malloc(sizeof(struct queue));//分配空間
q->front=0;
q->rear=0;
q->tag=0;
return q;
}
int EnQu(struct queue *q,int x)
{
if(q->rear==q->front && q->tag==1)//表示隊列已滿
return 0;
else
{ q->qu[q->rear]=x;
q->rear=(q->rear+1)%MaxSize; //尾指針向後走一步
if(q->rear==q->front) //若有元素入隊以後出現q->rear==q->front,則表示隊列滿
q->tag=1;
return 1;
}
}
int DeQu(struct queue *q)
{
if(q->rear==q->front && q->tag==0)//表示隊空
return 0;
else
{ q->qu[q->front]=0;//將隊頭元素的值賦值為0
q->front=(q->front+1)%MaxSize;//頭指針向後走一步
if(q->rear==q->front)//若有元素出隊以後出現q->rear==q->front,則表示隊列空
q->tag=0;
return 1;
}
}
void Display(struct queue *q)
{int n,i;//n為隊列中元素的個數
if(q->rear==q->front && q->tag==1)//隊列滿
n=MaxSize;
else
n=(q->rear-q->front+MaxSize)%MaxSize;
for(i=0;i<n;i++)
printf("%4d",q->qu[(q->front+i)%MaxSize]);
printf("\n");
}
main()
{struct queue *q;
int c,k,x;
q=InitQu();
loop:
printf("---------(1).入隊列請按數字鍵1.---------------");
printf("\n---------(2).出隊列請按數字鍵2.---------------");
printf("\n---------(3).列印隊列請按數字鍵3.-------------");
printf("\n請選擇要進行的操作:");
scanf("%d",&c);
switch(c)
{ case 1:{
do{
printf("請輸入入隊元素的值:");
scanf("%d",&x);
EnQu(q,x);
printf("\n是否繼續入隊,是請按數字鍵1,否則請按其他數字鍵!");
scanf("%d",&k);
}while(k==1);
goto loop;
break;
}
case 2:{
do{
DeQu(q);
printf("\n是否繼續出隊,是請按數字鍵1,否則請按其他數字鍵!");
scanf("%d",&k);
}while(k==1);
goto loop;
break;
}
case 3:{ Display(q);
goto loop;
break;
}
}
printf("\n");
}

『叄』 棧 實現循環隊列上的六種基本操作 (初始化、入隊、出隊、求隊列元素個數、判斷隊列是否為空、為滿)

#include <iostream>

using namespace std;

const int queuesize=30;

template <class T>

class crilink

{

T m_data[queuesize];

int m_front;

int m_rear;

public:

crilink();

~crilink();

void enter(T e);

T leave();

T getfront();

bool isempty();

bool isfull();

int length();

};

template <class T>

crilink<T>::crilink()

{

m_front=m_rear=0;

}

template <class T>

crilink<T>::~crilink()

{}

template <class T>

void crilink<T>::enter(T e)

{

if((m_rear+1)%queuesize==m_front) throw "上溢";

m_data[m_rear]=e;

m_rear=(m_rear+1)%queuesize;

}

template <class T>

T crilink<T>::leave()

{

T e;

if(m_front==m_rear)throw "下溢";

e=m_data[m_front];

m_front=(m_front+1)%queuesize;

return e;

}

template <class T>

T crilink<T>::getfront()

{

if(m_front==m_rear)throw "下溢";

return m_data[m_front];

}

template <class T>

bool crilink<T>::isempty()

{

if(m_front==m_rear) return true;

return false;

}

template <class T>

bool crilink<T>::isfull()

{

if((m_rear+1)%queuesize==m_front) return true;

return false;

}

template <class T>

int crilink<T>::length()

{

return (m_rear-m_front+queuesize)%queuesize;

}

int main()

{

crilink<int> h;

int i,n;

cin>>n;

for(i=1;i<=n;i++)

{

h.enter(i);

}

while(!h.isempty())

{

cout<<h.leave()<<endl;

if(!h.isempty())

h.enter(h.leave());

}

return 0;

}

『肆』 在循環隊列中入隊、出隊操作的過程

入隊:
1、新建一個變數p,指定內存空間;
2、將變數p的next指針指向隊頭head;
3、將隊尾變數的next指針指向變數p;
4、將變數p變為隊尾(或隊頭);
5、具體如下:
new(p);
p^.data:=****(自選數據)
p^.next:=head;
tail^.next:=p;
tail:=tail^.next;(或head:=p;)

出隊:單項循環隊列中需要搜索出隊變數的前綴(或後綴),雙向循環隊列不需,設該出隊變數為x;前綴為p,後綴o為q;
1、將前綴的next(或right)指針指向後綴;
2、(單項循環隊列不要此項)將後綴的last(或left)指針指向前綴;
3、若從隊頭或隊尾出隊則要調整隊頭變數head或隊尾變數tail;
4、釋放出隊的變數;
5、具體如下:
p^.next:=q;
q^.last:=p;
head:=q;(或tail:=p;)
dispose(x);

『伍』 採用順序存儲如何實現循環隊列的初始化、入隊、出隊操作

#include<stdio.h>
#define MAXSIZE 100
typedef struct seqqueue
{
int data[MAXSIZE];
int front;
int rear;
}seqqueue;

void Initseqqueue(seqqueue &q) //循環隊列初始化
{
q.front =q.rear=0;
printf("初始化成功!\n");
}

int enqueue(seqqueue &q,int e) //數據元素e入隊列
{
if((q.rear+1)%MAXSIZE==q.front)
{
printf("循環隊列滿!\n");
return 0;
}
else
{
q.data[q.rear]=e;
q.rear=(q.rear+1)%MAXSIZE;
printf("%d入隊列成功!\n",e);
return 1;
}
}

int isemptyqueue(seqqueue &q) //判斷循環隊列是否為空
{
if(q.rear ==q.front )
{
printf(" 空隊列!\n");
return 1;
}
else
{
printf("非空隊列!\n");
return 0;
}
}
int dequeue(seqqueue &q,int &e) //數據元素出隊列,出隊列元素暫存儲於e中
{
if(!isemptyqueue(q))
{
e=q.data [q.front ];
q.front =(q.front +1)%MAXSIZE;
printf("出隊列成功!\n");
return 1;
}
else
{
printf("出隊列失敗!\n");
return 0;
}
}
void main()
{
int x=0;
seqqueue qa;
Initseqqueue(qa);
isemptyqueue(qa);
dequeue(qa,x);
enqueue(qa,25);
isemptyqueue(qa);
dequeue(qa,x);
}

『陸』 如何在後台部署深度學習模型

搭建深度學習後台伺服器

我們的Keras深度學習REST API將能夠批量處理圖像,擴展到多台機器(包括多台web伺服器和Redis實例),並在負載均衡器之後進行循環調度。

為此,我們將使用:

『柒』 用鏈表實現一個循環隊列 以及其所應該有的操作

// 單鏈隊列-隊列的鏈式存儲結構。
typedef struct QNode
{ QElemType data;
QNode *next;
}*QueuePtr;

struct LinkQueue
{ QueuePtr front,rear;
};

// 鏈隊列的基本操作(9個)
void InitQueue(LinkQueue &Q)
{
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front)
exit(OVERFLOW);
Q.front->next=NULL;
}

void DestroyQueue(LinkQueue &Q)
{
while(Q.front)
{ Q.rear=Q.front->next;
free(Q.front);
Q.front=Q.rear;
}
}

void ClearQueue(LinkQueue &Q)
{
DestroyQueue(Q);
InitQueue(Q);
}

Status QueueEmpty(LinkQueue Q)
{
if(Q.front->next==NULL)
return TRUE;
else
return FALSE;
}

int QueueLength(LinkQueue Q)
{
int i=0;
QueuePtr p=Q.front;
while(Q.rear!=p)
{ i++;
p=p->next;
}
return i;
}

Status GetHead(LinkQueue Q,QElemType &e)
{
QueuePtr p;
if(Q.front==Q.rear)
return ERROR;
p=Q.front->next;
e=p->data;
return OK;
}

void EnQueue(LinkQueue &Q,QElemType e)
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
if(!p)
exit(OVERFLOW);
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}

Status DeQueue(LinkQueue &Q,QElemType &e)
{

QueuePtr p;
if(Q.front==Q.rear)
return ERROR;
p=Q.front->next;
e=p->data;
Q.front->next=p->next;
if(Q.rear==p)
Q.rear=Q.front;
free(p);
return OK;
}

void QueueTraverse(LinkQueue Q,void(*visit)(QElemType))
{
QueuePtr p=Q.front->next;
while(p)
{ visit(p->data);
p=p->next;
}
printf("\n");
}

// 鏈隊列的主函數
void main()
{
int i;
QElemType d;
LinkQueue q;
InitQueue(q);
printf("成功地構造了一個空隊列\n");
printf("是否空隊列?%d(1:空 0:否),",QueueEmpty(q));
printf("隊列的長度為%d\n",QueueLength(q));
EnQueue(q,-5);
EnQueue(q,5);
EnQueue(q,10);
printf("插入3個元素(-5,5,10)後,隊列的長度為%d\n",QueueLength(q));
printf("是否空隊列?%d(1:空 0:否),",QueueEmpty(q));
printf("隊列的元素依次為");
QueueTraverse(q,print);
i=GetHead(q,d);
if(i==OK)
printf("隊頭元素是%d,",d);
DeQueue(q,d);
printf("刪除了隊頭元素%d,",d);
i=GetHead(q,d);
if(i==OK)
printf("新的隊頭元素是%d\n",d);
ClearQueue(q);
printf("清空隊列後,q.front=%u,q.rear=%u,q.front->next=%u\n",q.front,
q.rear,q.front->next);
DestroyQueue(q);
printf("銷毀隊列後,q.front=%u,q.rear=%u\n",q.front,q.rear);
}

希望對你有幫助

『捌』 循環隊列的定義及其相關操作演算法的實現

malloc這個函數的頭文件你忘記包含了,在文件的開始處添加如下代碼即可:
#include "malloc.h"

另外你的主函數main的返回類型沒有給出,預設時作為int型的返回值,但你的main中無返回一個int型值的語句,程序會給出一個警告,因此你最好將main函數設計為void類型的函數。

『玖』 循環隊列基本操作求教

熟悉並能實現循環隊列的定義和基本操作

閱讀全文

與python循環隊列的操作相關的資料

熱點內容
java定義數據類型 瀏覽:874
安卓pdf手寫 瀏覽:427
什麼是app開發者 瀏覽:284
android鬧鍾重啟 瀏覽:101
程序員失職 瀏覽:518
在雲伺服器怎麼改密碼 瀏覽:586
伺服器pb什麼意思 瀏覽:940
51駕駛員的是什麼app 瀏覽:670
php靜態變數銷毀 瀏覽:886
編程買蘋果電腦 瀏覽:760
flac演算法 瀏覽:497
reactnative與android 瀏覽:663
程序員是干什麼的工作好嗎 瀏覽:258
kbuild編譯ko 瀏覽:469
條件編譯的宏 瀏覽:564
韓語編程語言 瀏覽:646
小程序開發如何租用伺服器 瀏覽:80
怎麼把釘釘文件夾保存到手機里 瀏覽:71
兵法pdf 瀏覽:645
app格式化下載不起怎麼辦 瀏覽:36