当前位置:网站首页>(9) Sequential queue and stack queue
(9) Sequential queue and stack queue
2022-06-22 07:53:00 【Day-3】
Sequential queue
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAXSIZE 20
typedef struct RkQueue
{
int data[MAXSIZE];
int front;
int rear;
};
bool InitQueue(struct RkQueue * Queue)
{
Queue->front = 0;
Queue->rear = 0;
return true;
}
bool QueueEmpty(struct RkQueue Queue)
{
if (Queue.front == Queue.rear)
{
return true;
}
else
{
return false;
}
}
int QueueLength(struct RkQueue Queue)
{
int nRet = Queue.rear - Queue.front;
return nRet;
}
bool GetTop(struct RkQueue Queue, int * nData)
{
if (Queue.front == Queue.rear)
{
return false;
}
else
{
*nData = Queue.data[Queue.front];
return true;
}
}
bool DeQueue(struct RkQueue * Queue, int * nData)
{
if (Queue->front == Queue->rear)
{
return false;
}
else
{
*nData = Queue->data[Queue->front];
if (Queue->front == (MAXSIZE - 1))
{
Queue->front = 0;
return true;
}
else
{
Queue->front = Queue->front + 1;
return true;
}
}
}
bool EnQueue(struct RkQueue * Queue, int * nData)
{
if ((Queue->rear + 1) == MAXSIZE)
{
return false;
}
else
{
Queue->data[Queue->rear] = nData;
Queue->rear = Queue->rear + 1;
return true;
}
}
bool ShowQueueValue(struct RkQueue Queue)
{
if (Queue.front == Queue.rear)
{
printf("null\n");
return false;
}
for (size_t i = Queue.front; i < Queue.rear; i++)
{
printf("%d\n", Queue.data[i]);
}
return true;
}
int main()
{
struct RkQueue m_Rk;
InitQueue(&m_Rk);
for (size_t i = 0; i < 10; i++)
{
EnQueue(&m_Rk, i);
}
ShowQueueValue(m_Rk);
printf("Length = %d\n", QueueLength(m_Rk));
if (QueueEmpty(m_Rk))
{
printf("Empty!\n");
}
else
{
printf("Queue!\n");
}
int nData = 0;
GetTop(m_Rk, &nData);
printf("GetTop = %d\n", nData);
DeQueue(&m_Rk, &nData);
printf("DeQueue = %d\n", nData);
ShowQueueValue(m_Rk);
system("pause");
return 0;
}
Chain queue
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct _QueueNode
{
int data;
struct QueueNode *next;
}QueueNode,*PQueueNode;
typedef struct _LinkQueue
{
PQueueNode front;
PQueueNode rear;
}LinkQueue;
bool InitQueue(LinkQueue * Queue)
{
Queue->front = Queue->rear = (PQueueNode)malloc(sizeof(PQueueNode));
if (!Queue->front)
{
return false;
}
else
{
Queue->front->next = NULL;
return true;
}
}
bool DestoryQueue(LinkQueue * Queue)
{
while (Queue->front)
{
Queue->rear = Queue->front->next;
free(Queue->front);
Queue->front = Queue->rear;
}
return true;
}
bool ClearQueue(LinkQueue * Queue)
{
PQueueNode Temp1;
PQueueNode Temp2;
Queue->rear = Queue->front;
Temp1 = Queue->front->next;
Queue->front->next = NULL;
while (Temp1)
{
Temp2 = Temp1;
Temp1 = Temp1->next;
free(Temp2);
}
return true;
}
bool QueueEmpty(LinkQueue Queue)
{
if (Queue.front == Queue.rear)
{
return true;
}
else
{
return false;
}
}
int QueueLength(LinkQueue Queue)
{
int nCount = 0;
PQueueNode TempNode;
TempNode = Queue.front;
while (Queue.rear != TempNode)
{
TempNode = TempNode->next;
nCount++;
}
return nCount;
}
bool GetTop(LinkQueue Queue, int *nData)
{
PQueueNode TempNode;
if (Queue.front == Queue.rear)
{
return false;
}
else
{
TempNode = Queue.front->next;
*nData = TempNode->data;
return true;
}
}
bool EnQueue(LinkQueue * Queue, int nData)
{
PQueueNode TempNode = (PQueueNode)malloc(sizeof(QueueNode));
if (!TempNode)
{
return false;
}
else
{
TempNode->data = nData;
TempNode->next = NULL;
Queue->rear->next = TempNode;
Queue->rear = TempNode;
return true;
}
}
bool DeQueue(LinkQueue * Queue, int * nData)
{
PQueueNode TempNode;
if (Queue->front == Queue->rear)
{
return false;
}
else
{
TempNode = Queue->front->next;
*nData = TempNode->data;
Queue->front->next = TempNode->next;
if (Queue->rear == TempNode)
{
Queue->rear == Queue->front;
}
free(TempNode);
return true;
}
}
bool ShowQueueValue(LinkQueue Queue)
{
PQueueNode TempNode;
TempNode = Queue.front->next;
while (TempNode)
{
printf("Node Value = %d\n", TempNode->data);
TempNode = TempNode->next;
}
return true;
}
int main()
{
LinkQueue m_Rk;
InitQueue(&m_Rk);
for (size_t i = 0; i < 10; i++)
{
EnQueue(&m_Rk, i);
}
ShowQueueValue(m_Rk);
if (QueueEmpty(m_Rk))
{
printf("Empty!\n");
}
else
{
printf("Queue!\n");
}
printf("QueueLength = %d\n", QueueLength(m_Rk));
for (size_t i = 0; i < 5; i++)
{
int nData = 0;
DeQueue(&m_Rk, &nData);
printf("DeQueue = %d\n", nData);
}
ShowQueueValue(m_Rk);
int nData = 0;
GetTop(m_Rk, &nData);
printf("GetTop = %d\n", nData);
system("pause");
return 0;
}
边栏推荐
- ExcelToJson
- 7、 Picker component
- Backup the method of uploading babies in Taobao stores to multiple stores
- Mystery of power bank
- Daily maintenance of website
- 模电实验——实验二 JFET共源极放大电路
- Target detection series -- detailed explanation of RCNN principle
- lr 2022超详细安装教程「最新」
- Canvastotempfilepath of wechat
- Xlua environment configuration
猜你喜欢

Multimedia architecture -- Introduction to display

Xmind 2022思维导图激活版资源?

Xlua environment configuration
![[songhongkang MySQL database] [advanced chapter] [07] MySQL storage engine](/img/47/62ad1e661e015438c40574f533d8f1.png)
[songhongkang MySQL database] [advanced chapter] [07] MySQL storage engine

模板代码概述

模电实验——实验二 JFET共源极放大电路

Wechat games (4)

Target detection series -- detailed explanation of RCNN principle

数据可视化优秀案例

Crmeb mall order shipping function
随机推荐
Lookup encapsulation of unity monobehavior component
An example shows the difference between let and VaR
Open version - account information synchronization and unification
基于消息传递的并发编程(MPI)之异步收发
Baidu Post Bar crawler crawls to the middle of the building
数据可视化优秀案例
Asyncstorage quick start
Backup the method of uploading babies in Taobao stores to multiple stores
Usage and understanding of async/await in JS
Modular import and export collation in JS
Spritemanager load Atlas
User defined pop-up use
网站的排名对于网站很重要
Major enterprises are losing money one after another. Where will the environmental protection industry go?
Upload your own library to pod
Expérience électrique en mode - - expérience 2 circuit d'amplification de source commune JFET
Leetcode 172 Zero after factorial (2022.06.21)
Itemtools permutation
Impact of dead chain on websites
Open version - write off