线性队列操作
来源:互联网 发布:线性表c语言实现 编辑:程序博客网 时间:2024/05/18 00:57
本文主要介绍线性队列的一些操作,费话不多说, 直接上代码。
/** 线 性队列操作*/#include <stdio.h>typedef struct _QUEUE { int *data; int head; int tail; int count; int lengh;} queue_t;/*初始化队列*/queue_t * init_queue(unsigned int index){ queue_t *queue = NULL; if (index == 0) return ; queue = (queue_t *)malloc (sizeof(queue_t)); if (NULL == queue) { queue = (queue_t *)malloc (sizeof(queue_t)); if (NULL == queue) { return NULL; } } memset(queue, 0, sizeof (queue_t)); queue->data = (int *)malloc(sizeof(int) * index); if (queue->data == NULL) { queue->data = (int *)malloc(sizeof(int) * index); if (NULL == queue->data) { free(queue); return NULL; } } memset(queue->data, 0, sizeof(int) * index); queue->head = 0; queue->tail = 0; queue->count = 0; queue->lengh = index; return queue;}/*删除队列*/void destroy_queue(queue_t *queue){ if (queue == NULL) return ; free(queue->data); queue->data = NULL; free(queue); queue = NULL; return;}/*入队操作*/int push_data_to_queue(queue_t *queue, int data){ if (queue == NULL) return 1 ; if (!is_queue_full(queue)) return 1; queue->data[queue->tail] = data; queue->tail = (queue->tail + 1) % queue->lengh; queue->count++; return 0;}/*出队操作*/int poll_data_from_queue(queue_t *queue, int *data){ if (queue == NULL) return 1 ; if(!is_queue_empty(queue)) return 1; *data = queue->data[queue->head]; queue->data[queue->head] = 0; queue->head = (queue->head + 1) % queue->lengh; queue->count--; return 0;}/*判断队列是否为空*/int is_queue_empty(queue_t *queue){ if (queue == NULL){ return 1; } if (queue->count == 0) return 0; else return 1;}/*判断队列是否已满*/int is_queue_full(queue_t *queue){ if (queue == NULL){ return 1; } if (queue->count == queue->lengh) return 0; else return 1;}/*打印队列成员*/void print_queue_data(queue_t *queue){ int i; for (i=0; i < (queue->count); i++) printf ("%d\n", queue->data[i]); return ;}/*测试用例*/int main(int argc, char *argv[]){ int i; int index; queue_t *queue; queue = init_queue(10); for (i =0; i < 10; i++){ if (push_data_to_queue(queue,i)) printf("push data %d error\n", i); } print_queue_data(queue); for (i=0; i < 10; i++){ if(poll_data_from_queue(queue,&index)) printf("poll data %d error\n", i); printf ("the index is %d\n", index); } destroy_queue(queue); return 0;}
- 线性队列操作
- 线性队列操作
- 线性队列
- 队列 线性队列
- 线性表----队列(顺序表示)的基本操作
- 线性表----循环队列(顺序表示)的基本操作
- 线性表----队列(链接表示)的基本操作
- C语言线性表循环队列的基本操作
- 队列的一些操作(线性表,链式)
- 多态实现线性表(队列,串,堆栈),要求具备线性表的基本操作
- 第2章 线性表、操作受限的线性表(栈、队列)
- c 队列线性存储
- 线性结构_队列
- 线性结构 循环队列
- 【数据结构】线性循环队列
- 数据结构之线性队列
- 线性表、栈、队列
- 线性表、栈、队列
- 崇尚个人英雄主义很难铸就优秀的网站设计公司
- GDB 程序调试
- iOS开发教程:Storyboard全解析-第二部分
- Win7个性小技巧:使用快捷键启动应用程序
- 关于浏览器渲染原理的读后感
- 线性队列操作
- 中国天气网的中央气象台实时数据接口之管中窥豹
- 【python】python安装+入门
- IT民工如何华丽转身?三大方向寻求职业“突围”
- android 电池(一):锂电池基本原理篇
- sicily1321. Robot
- 树莓派USB网络摄像头使用教程
- Java基础复习:IO流(续)
- adb push 和 adb install 的区别