当前位置: 首页 > news >正文

江阴外贸网站建设公司沈阳网站公司排名

江阴外贸网站建设公司,沈阳网站公司排名,网站怎么做的有创意,wordpress 免费主题【数据结构】栈和队列 一#xff1a; 栈1.栈的概念及和结构2. 栈的实用3. 栈接口实现 二#xff1a; 队列1. 队列的概念和结构2. 队列的实用3. 队列接口实现 三#xff1a;扩展 一#xff1a; 栈 1.栈的概念及和结构 栈#xff1a;一种特殊的线性表#xff0c;其只允许… 【数据结构】栈和队列 一 栈1.栈的概念及和结构2. 栈的实用3. 栈接口实现 二 队列1. 队列的概念和结构2. 队列的实用3. 队列接口实现 三扩展 一 栈 1.栈的概念及和结构 栈一种特殊的线性表其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶另一端称为栈底。栈中的数据元素遵守后进先出LIFOLast In First Out的原则。   压栈栈的插入操作叫做进栈/压栈/入栈入数据在栈顶。 出栈栈的删除操作叫做出栈。出数据也在栈顶。   2. 栈的实用 栈的实现一般可以使用数组或者链表实现相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。 3. 栈接口实现 Stach.h: // 下面是定长的静态栈的结构实际中一般不实用所以我们主要实现下面的支持动态增长的栈 typedef int STDataType; #define N 10 typedef struct Stack {STDataType _a[N];int _top; // 栈顶 }Stack;// 支持动态增长的栈 typedef int STDataType; typedef struct Stack {STDataType* _a;int _top; // 栈顶int _capacity; // 容量 }Stack; // 初始化栈 void StInit(Stack* ps); // 入栈 void StPush(Stack* ps, STDataType data); // 出栈 void StPop(Stack* ps); // 获取栈顶元素 STDataType StTop(Stack* ps); // 获取栈中有效元素个数 int StSize(Stack* ps); // 检测栈是否为空如果为空返回非零结果如果不为空返回0 int StEmpty(Stack* ps); // 销毁栈 void StDestroy(Stack* ps)Stack.c: #include Stack.hvoid STInit(ST* ps) {assert(ps);ps-a NULL;ps-capacity 0;ps-top 0;//top指向栈顶元素的下一个位置 }void STDestory(ST* ps) {assert(ps);free(ps-a);ps-a NULL;ps-capacity ps-top 0; }void STPush(ST* ps, STDateType x) {assert(ps);if (ps-top ps-capacity){int newCapacity ps-capacity 0 ? 4 : ps-capacity * 2;STDateType* tmp (STDateType*)realloc(ps-a,sizeof(STDateType) * newCapacity);if (tmp NULL){perror(malloc fail);exit(-1);}//创建成功ps-a tmp;ps-capacity newCapacity;}ps-a[ps-top] x;ps-top; }void STPop(ST* ps) {assert(ps);assert(ps-top 0);ps-top--; }STDateType STTop(ST* ps) {assert(ps);assert(ps-top 0);return ps-a[ps-top - 1]; }int STSize(ST* ps) {return ps-top; }bool STEmpty(ST* ps) {assert(ps);return ps-top 0; }二 队列 1. 队列的概念和结构 队列只允许在一端进行插入数据操作在另一端进行删除数据操作的特殊线性表队列具有先进先出FIFO(First In First Out)的原则。   入队列进行插入操作的一端称为队尾 出队列进行删除操作的一端称为队头   2. 队列的实用 队列也可以数组和链表的结构实现使用链表的结构实现更优一些因为如果使用数组的结构出队列在数组头上出数据效率会比较低。 3. 队列接口实现 Queue.h: #include stdio.h #include assert.h #include stdlib.h #include stdbool.htypedef int QDataType; typedef struct QueueNode {struct QueueNode* next;QDataType data; }QNode;//为了解决传二级指针的问题有两种方法 //第一种是传哨兵位另一种就是如下在封装一个结构体 typedef struct Queue {QNode* head;QNode* tail;int size; }Que;// 初始化队列 void QueueInit(Que* pq); // 队尾入队列 void QueuePush(Que* pq, QDataType x); // 队头出队列 void QueuePop(Que* pq); // 获取队列头部元素 QDataType QueueFront(Que* pq); // 获取队列队尾元素 QDataType QueueBack(Que* pq); // 获取队列中有效元素个数 int QueueSize(Que* pq); // 检测队列是否为空如果为空返回1如果非空返回0 bool QueueEmpty(Que* pq); // 销毁队列 void QueueDestroy(Que* pq);Queue.c: #include Stack.hvoid STInit(ST* ps) {assert(ps);ps-a NULL;ps-capacity 0;ps-top 0;//top指向栈顶元素的下一个位置 }void STDestory(ST* ps) {assert(ps);free(ps-a);ps-a NULL;ps-capacity ps-top 0; }void STPush(ST* ps, STDateType x) {assert(ps);if (ps-top ps-capacity){int newCapacity ps-capacity 0 ? 4 : ps-capacity * 2;STDateType* tmp (STDateType*)realloc(ps-a,sizeof(STDateType) * newCapacity);if (tmp NULL){perror(malloc fail);exit(-1);}//创建成功ps-a tmp;ps-capacity newCapacity;}ps-a[ps-top] x;ps-top; }void STPop(ST* ps) {assert(ps);assert(ps-top 0);ps-top--; }STDateType STTop(ST* ps) {assert(ps);assert(ps-top 0);return ps-a[ps-top - 1]; }int STSize(ST* ps) {return ps-top; }bool STEmpty(ST* ps) {assert(ps);return ps-top 0; }三扩展 实际中我们有时还会使用一种队列叫循环队列。如操作系统课程讲解生产者消费者模型时可以就会使用循环队列。环形队列可以使用数组实现也可以使用循环链表实现。
http://www.huolong8.cn/news/345293/

相关文章:

  • 北京康迪建设监理咨询有限公司网站6做熟食的网站美食网站
  • wordpress建娱乐站长沙seo推广
  • 文案交流网站建筑建设行业网站
  • 高中生做网站网页如何做网页设计
  • 2015网站建设广东省网站免备案表
  • muse cc 做网站怎么再贴吧给自己的网站做宣传
  • 网站建设与维护工作申请号的网站
  • 贵阳微网站建设公司哪家好百度推广怎么弄
  • 做摄影和后期的兼职网站猎头公司是啥意思
  • 郑州网站制作专业乐云seo著名营销成功案例
  • 菏泽网站建设效果wordpress怎么创建目录页面
  • 用虚拟机做网站服务器大众点评怎么做团购网站
  • 网站的劣势做优惠券网站赚钱吗
  • 农场会员营销网站建设wordpress 等级
  • 文明网站建设培训体会网站嵌入js
  • 好的网站建设商家wordpress theme 插件
  • 太原营销型网站建设河北建设工程招标协会网站
  • 网乐科技网站建设成都网络营销搜索推广优势
  • 青浦建设机械网站游戏网站开发毕业设计
  • 苏州华亭建设工程有限公司网站wordpress简约企业商城
  • 网站文章怎么做分享qq建站工具有什么用
  • 建设银行网站改手机号易居房产cms
  • 网站建设需要怎样的经营范围国内用react做的网站
  • 外贸网站推广计划江苏省宿迁市建设局网站首页
  • 如何网站开发语言公众号接入小程序
  • 烟台H5网站设计公司网站域名备案系统
  • 浙江省兰溪建设局网站做网站汉中
  • 江苏营销型网站建设公司网页升级紧急通知域名
  • 许昌做网站公司专业做网站哪家好一个好的网站应该具有什么
  • 做外贸网站需要什么wordpress添加媒体无反应