c语言自动生成球队名称,C语言实现队(循环队列)
之前用鏈表實現隊,這里用數組實循環隊列,今天又看了一下隊列,發現少了計算隊列長度的函數
隊列的實現代碼,犧牲一個元素存儲空間
#include#define maxsize 10
typedef int datatype;
//定義隊的結構體
struct queue
{
datatype data[maxsize];
int front;
int rear;
};
typedef struct queue Queue;
//初始化隊
void init(Queue *q)
{
q->front=q->rear=0;
}
//判斷是否為空
//這里有兩種方法
//先實現犧牲一個存儲空間的方法,即rear始終指向空
bool Empty(Queue *q)
{
if(q->front==q->rear)
{
return true;
}
else
{
return false;
}
}
//判斷是否滿
bool full(Queue *q)
{
if((q->rear+1)%maxsize==q->front)
{
return true;
}
else
{
return false;
}
}
//入隊
void Push(Queue *q,datatype element)
{
if(!full(q))
{
q->data[q->rear]=element;
q->rear=(q->rear+1)%maxsize;
}
else
{
printf("隊滿!\n");
}
}
//出隊
void Pop(Queue *q)
{
if(!Empty(q))
{
q->front=(q->front+1)%maxsize;
}
else
{
printf("隊空\n");
}
}
//取隊頂元素
datatype Top(Queue *q)
{
if(!Empty(q))
{
return q->data[q->front];
}
else
{
printf("隊空\n");
}
}
隊列的測試代碼
#include#include "CircleQueue.h"
int main()
{
int i=0;
Queue s;
Queue *q=&s;
// struct stack s;
//初始化隊
printf("\n###########初始化隊###########\n");
init(q);
printf("----------------------------------");
//入隊操作
printf("\n###########入隊操作###########\n");
for(i=2;i<=11;i++)
{
Push(q,i);
}
printf("----------------------------------");
//取隊頂元素
printf("\n###########取隊頂元素###########\n");
printf("%d\n",Top(q));
Pop(q);
Pop(q);
printf("----------------------------------");
//入隊操作
printf("\n###########入隊操作###########\n");
for(i=215;i<=219;i++)
{
Push(q,i);
}
printf("----------------------------------");
//出隊操作
printf("\n###########出隊操作###########\n");
for(i=0;i<=10;i++)
{
Pop(q);
}
printf("----------------------------------");
//取隊頂元素
printf("\n###########取隊頂元素###########\n");
Top(q);
printf("----------------------------------");
// //銷毀隊
// printf("\n###########銷毀隊###########\n");
// Push(q,10);
// Destroy(q);
// Top(q);
}
設置一個flag的方法,用flag區分隊空與非空
#include#define maxsize 10
typedef int datatype;
//定義隊的結構體
struct queue
{
datatype data[maxsize];
int front;
int rear;
int flag; //flag=0時隊空,flag=1時隊非空
};
typedef struct queue Queue;
//初始化隊
void init(Queue *q)
{
q->front=q->rear=0;
q->flag=0;
}
//判斷是否為空
//這里有兩種方法
//先實現犧牲一個存儲空間的方法,即rear始終指向空
bool Empty(Queue *q)
{
if(q->flag==0)
{
return true;
}
else
{
return false;
}
}
//判斷是否滿
bool full(Queue *q)
{
if(!Empty(q)&&q->rear==q->front)
{
return true;
}
else
{
return false;
}
}
//入隊
void Push(Queue *q,datatype element)
{
if(!full(q))
{
q->data[q->rear]=element;
q->rear=(q->rear+1)%maxsize;
q->flag=1;
}
else
{
printf("隊滿!\n");
}
}
//出隊
void Pop(Queue *q)
{
if(!Empty(q))
{
q->front=(q->front+1)%maxsize;
if(q->front==q->rear)
{
q->flag=0;
}
}
else
{
printf("隊空\n");
}
}
//取隊頂元素
datatype Top(Queue *q)
{
if(!Empty(q))
{
return q->data[q->front];
}
else
{
printf("隊空\n");
}
}
或者這里把flag改為隊長,那么方法簡單,在每次入隊時加一個元素,出隊時減一個元素
總結
以上是生活随笔為你收集整理的c语言自动生成球队名称,C语言实现队(循环队列)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进程同步算法实现实验报告Linux,操作
- 下一篇: c语言程序设计教案 文库,C语言程序设计