如何建立小企业网站,上海seo外包,自己怎么制作网页游戏,wordpress 基于 网店目录
前言
队列
定义
队列的定义和操作方法 队列节点的定义 操作方式 顺序表实现队列#xff08;C/C代码#xff09;
链表实现队列#xff08;C/C代码#xff09;
Python语言实现队列 前言 排队是我们日常生活中必不可少的一件事#xff0c;去饭堂打饭的时候排队C/C代码
链表实现队列C/C代码
Python语言实现队列 前言 排队是我们日常生活中必不可少的一件事去饭堂打饭的时候排队上公交车的时候排队等等那排队的原则就是先到先得排在前面的人先打饭同样的在数据结构当中有一种数据结构类型叫队列其性质跟排队是一模一样的下面我们就一起来看看吧
队列
定义 队列是一种特殊的线性表特殊之处在于它只允许在表的前端front进行删除操作而在表的后端rear进行插入操作和栈一样队列是一种操作受限制的线性表。进行插入操作的端称为队尾进行删除操作的端称为队头。队列中没有元素时称为空队列。 队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队从队列中删除一个队列元素称为出队。因为队列只允许在一端插入在另一端删除所以只有最早进入队列的元素才能最先从队列中删除故队列又称为先进先出FIFO—first in first out线性表 队列可以通过顺序表实现和链表实现下面就一起来看看吧
队列的定义和操作方法 队列节点的定义
顺序表
//队列定义
typedef struct queue {ElemType data[Maxsize];int front;//指向队头int rear;//指向队尾
}Queue;
链式
//定义队列
typedef struct queue {int count; //计数Node* front;//指向队头指针Node* rear;//指向队尾指针
}Queue; 操作方式
void Queue_init(Queue* queue);//初始化bool isEmpty(Queue* queue);//判空bool isFull(Queue* queue);//判满void enQueue(Queue* queue, ElemType data);//入队Node* deQueue(Queue* queue);//出队int get_length(Queue* queue);//获取长度void travel_Queue(Queue* queue);//遍历队头到队尾void clear_Queue(Queue* queue);//清空销毁 顺序表实现队列C/C代码
#include stdio.h
#includestring.h
#define Maxsize 20 //最大容量
//顺序表队列//节点数据
typedef struct data {int num;char name[10];
}ElemType;
//队列定义
typedef struct queue {ElemType data[Maxsize];int front;//指向队头int rear;//指向队尾
}Queue;//初始化
void queue_init(Queue* queue) {queue-front 0;queue-rear 0;
}//判断是否满队列
bool isFull(Queue* queue) {if (queue-rear Maxsize) {printf(The queue is full\n);return true;}return false;
}//判断是否空队列
bool isEmpty(Queue* queue) {if (queue-rear 0) {printf(The queue is etmpy\n);return true;}return false;
}//入队操作
void enQueue(Queue* queue, ElemType data) {if (!isFull(queue)) {//赋值queue-data[queue-rear].num data.num;strcpy(queue-data[queue-rear].name, data.name);queue-rear; //队尾1往后移动一位}elseprintf(error\n);
}//出队操作
ElemType deQueue(Queue* queue) {ElemType de_data { 0 };if (!isFull(queue)) {de_data queue-data[queue-front];queue-front; //队头1往后移动一位return de_data;}elseprintf(error\n);
}//遍历队列从队头开始到队尾
void travel_Queue(Queue* queue) {for (int i queue-front; i queue-rear; i) {printf(%d %s\n, queue-data[i].num, queue-data[i].name);}printf(printf over!\n);
}//获取队列长度
int get_Queuelength(Queue* queue) {return queue-rear-queue-front;
}//清空队列
void clear_Queue(Queue* queue) {queue_init(queue);//直接恢复出厂设置
}int main(void)
{Queue queue;queue_init(queue);ElemType data[4] { {15,fuck},{16,wdf},{17,wtmc},{18,cnmb} };for (int i 0; i 4;i) {enQueue(queue, data[i]);}deQueue(queue);travel_Queue(queue);
}//16 wdf
//17 wtmc
//18 cnmb
//printf over!链表实现队列C/C代码
#includestdio.h
#includestring.h
#include stdbool.h
#includestdlib.h
#includeassert.h
#define Maxsize 20typedef struct datatype {int num;char name[10];
}ElemType;
//定义节点
typedef struct node {ElemType data;struct node* next;
}Node;
//定义队列
typedef struct queue {int count; //计数Node* front;//指向队头指针Node* rear;//指向队尾指针
}Queue;void Queue_init(Queue* queue);//初始化
bool isEmpty(Queue* queue);//判空
bool isFull(Queue* queue);//判满
void enQueue(Queue* queue, ElemType data);//入队
Node* deQueue(Queue* queue);//出队
int get_length(Queue* queue);//获取长度
void travel_Queue(Queue* queue);//遍历
void clear_Queue(Queue* queue);//清空销毁int main()
{Queue myqueue;Queue_init(myqueue);ElemType data[4] { {15,a},{16,wb},{17,htt},{18,jk} };for (int i 0; i 4; i) {enQueue(myqueue, data[i]);}deQueue(myqueue);travel_Queue(myqueue);
}
//16 wb
//17 htt
//18 jk
//Printf over//初始化
void Queue_init(Queue* queue) {assert(queue);queue-front NULL;queue-rear NULL;queue-count0;
}//创建节点
Node* create_node(ElemType data) {Node* new_node (Node*)malloc(sizeof(Node));if (new_node) {new_node-data data;new_node-next NULL;return new_node;}else{printf(ERRPR\n);}
}//判断是否空队列
bool isEmpty(Queue* queue) {assert(queue);if (queue-count 0){printf(The queue is etmpy\n);return true;}return false;
}//判断是否满队列
bool isFull(Queue* queue) {assert(queue);if (queue-count Maxsize) {printf(The queue is full\n);return true;}return false;
}//入队
void enQueue(Queue* queue, ElemType data) {assert(queue);if (!isFull(queue)) {Node* new_node create_node(data);//如果队尾指向空的时候也就是队列为空时if (queue-rear NULL) {queue-front new_node;queue-rear new_node;queue-count;}//当队列不为空的时候else{queue-rear-next new_node;queue-rear new_node;queue-count;}}else{printf(error\n);}
}//出队
Node* deQueue(Queue* queue) {assert(queue);if (!isEmpty(queue)) {Node* deNode queue-front;queue-front deNode-next;queue-count--;return deNode;}printf(error\n);return NULL;
}//获取队列长度
int get_length(Queue* queue) {assert(queue);return queue-count;
}//遍历队列
void travel_Queue(Queue* queue) {assert(queue);Node* cur queue-front;while (cur) {printf(%d %s\n, cur-data.num, cur-data.name);cur cur-next;}printf(Printf over\n);
}//清空队列
void clear_Queue(Queue* queue) {assert(queue);Node* cur queue-front;while (cur) {//要把每一个节点的空间都释放避免内存泄漏Node* p cur-next; //获取到当前节点的下一个节点free(cur);cur p;}printf(Clear successfully!\n);
}
Python语言实现队列 链接Python数据结构-----队列_python队列_灰勒塔德的博客-CSDN博客 以上就是今天的全部内容了我们下一期再见
分享一张壁纸