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

网站开发学校 优帮云广州天河区有什么好玩的

网站开发学校 优帮云,广州天河区有什么好玩的,网站开发超链接点击后变色,东丽网站建设公司本篇博客将介绍栈和队列的定义以及实现。 1.栈的定义 栈是一种特殊的线性表#xff0c;只允许在固定的一端进行插入和删除数据#xff0c;插入数据的一端叫做栈顶#xff0c;另一端叫做栈底。栈中的数据遵守后进先出的原则 LIFO (Last In First Out)。 插入数据的操作称为压…本篇博客将介绍栈和队列的定义以及实现。 1.栈的定义 栈是一种特殊的线性表只允许在固定的一端进行插入和删除数据插入数据的一端叫做栈顶另一端叫做栈底。栈中的数据遵守后进先出的原则 LIFO (Last In First Out)。 插入数据的操作称为压栈/进栈/入栈。 删除数据的操作称为出栈。 压栈和出栈的操作都在栈顶。 2.  栈的实现 栈的实现可以利用数组或者链表在此处由于数组在尾部插入和删除数据较为简单因此我们利用数组实现栈的相关操作。数组的结构如下 因此我们需要实现以下功能 typedef int STDataType; typedef struct Stack {STDataType* a;int top; //栈顶int capaicty; }ST;void STInit(ST* pst); //初始化 void STDestroy(ST* pst);//内存释放 void STPush(ST* pst, STDataType x);//压栈 void STPop(ST* pst);//出栈 STDataType STTop(ST* pst);//返回栈顶数据 bool STEmpty(ST* pst);//判断栈是否为空 int STSize(ST* pst);//返回栈中数据个数 接下来我们可以初始定义一个结构体: ST st; 具体函数代码如下 void STInit(ST* pst) {assert(pst);pst-a NULL;//pst-top -1; //top指向栈顶数据pst-top 0; //top指向栈顶数据的下一个pst-capaicty 0; }void STDestroy(ST* pst) {assert(pst);free(pst-a);pst-a NULL;pst-top 0;pst-capaicty 0; }void STPush(ST* pst, STDataType x) {if (pst-top pst-capaicty){ int newCapacity pst-capaicty 0 ? 4 : pst-capaicty * 2;STDataType* tmp (STDataType*)realloc(pst-a, newCapacity * sizeof(STDataType));if (tmp NULL){perror(realloc fail);return;}pst-a tmp;pst-capaicty newCapacity;}pst-a[pst-top] x;pst-top; }void STPop(ST* pst) {assert(pst);assert(!STEmpty(pst));pst-top--; }STDataType STTop(ST* pst) { assert(pst);assert(!STEmpty(pst));return pst-a[pst-top - 1]; }bool STEmpty(ST* pst) {assert(pst);return pst-top 0;//等于0为真 }int STSize(ST* pst) {assert(pst);return pst-top; } 需要注意的是当打印栈时则是通过 STDataType STTop(ST* pst); 返回栈顶数据打印然后栈顶数据出栈再打印新的栈顶。直到栈为空代码如下 while (!STEmpty(st)) {printf(%d , STTop(st));STPop(st); } 3. 队列的定义  队列只允许一端进行插入数据的操作二在另一端删除数据的一种特殊线性表队列数据按照先进先出入队列 FIFO (First in FIrst Out)。 队尾插入数据对头删除数据。 4. 队列的实现  同样的队列的实现也可以利用数组和链表实现在此处使用单链表较为简单因为入队相当于单链表的尾插出队相当于单链表的头删。 因此我们需要实现以下功能 typedef int QueueDataType;typedef struct QueueNode //定义每个结点的结构 {struct QueueNode* next;QueueDataType data; }QNode;typedef struct Queue //标识整个队列 {QNode* phead;QNode* ptail;int size; }Queue;void QueueInit(Queue* pq);//队列初始化 void QueueDestory(Queue* pq);//内存释放 void QueuePush(Queue* pq, QueueDataType x);//入队 void QueuePop(Queue* pq);//出队 QueueDataType QueueFront(Queue* pq);//队头数据 QueueDataType QueueBack(Queue* pq);//队尾数据 int QueueSize(Queue* pq);//队列节点个数 bool QueueEmpty(Queue* pq);//判断空队列 接下来我们定义初始结构体 Queue q; 具体实现代码如下 void QueueInit(Queue* pq) {assert(pq);pq-phead NULL;pq-ptail NULL;pq-size 0; } void QueueDestory(Queue* pq) {assert(pq);QNode* cur pq-phead;while (cur){QNode* next cur-next;free(cur);cur next;}pq-phead pq-ptail NULL;pq-size 0; } void QueuePush(Queue* pq, QueueDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail\n);return;}newnode-data x;newnode-next NULL;if (pq-ptail NULL){assert(pq-phead NULL);pq-phead pq-ptail newnode;}else {pq-ptail-next newnode;pq-ptail newnode;}pq-size; }void QueuePop(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));//1. 一个节点//2. 多个节点if (pq-phead-next NULL){free(pq-phead);pq-phead pq-ptail NULL;}else{QNode* next pq-phead-next;free(pq-phead);pq-phead next;}pq-size--; } QueueDataType QueueFront(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-phead-data; } QueueDataType QueueBack(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-ptail-data; } int QueueSize(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-size; } bool QueueEmpty(Queue* pq) {assert(pq);return pq-phead NULL pq-ptail NULL;//空 turn//return pq-size; } 同样的返回对头数据打印然后对头数据出队再打印新的对头。直到队列为空代码如下  while (!QueueEmpty(q)) {printf(%d , QueueFront(q));QueuePop(q); }
http://www.hkea.cn/news/14579982/

相关文章:

  • 邯郸做网站电话wordpress上一篇下一篇箭头
  • 做网站 工商 非法经营网站建设与运营的公司
  • 清河做网站哪家好免费代理做企业网站
  • 优服优科网站建设公司公众号做淘宝客接入手机网站
  • 那方面 搜索网站短视频网站平台怎么做的
  • 南京市鼓楼区建设局网站广州番禺房价
  • 微博如何做的跟网站一样神箭手 wordpress
  • 广西网站建设价格多少你理解的网络营销是什么
  • 平面设计网站制作wordpress修改文章浏览次数
  • 网络有限公司做女装网站的网站专题页面案例
  • 网站设计建设流程网站上传程序流程
  • 手机网站免费做推广网站代码优化所有标签
  • 单页网站是什么样子的早晨网站建设
  • 音频网站开发在线做qq空间的网站
  • 网站开发前端和后端工作专业网站建设模块
  • 网站后台如何做产品展示建立个人网站视频教程
  • 政务网站建设管理工作总结网店运营培训
  • 哈尔滨cms模板建站免费文档模板素材网站
  • 如何修改asp网站免费建论坛网站
  • 如何在360网站上做软文推广汽车之家 网站建设
  • 如何获得网站域名网站中图片下移怎么做
  • 企业做网站优势网站建设与管理自考本
  • 做网站绘制蓝图的步骤wordpress站点统计
  • 可以用服务器做网站安国市住房和城乡建设局网站
  • 成都优化网站厂家wordpress制作网站
  • wordpress全站ajax插件网页设计与网站建设-学用一册通
  • 红古微信网站建设外贸平台app下载
  • 爱站库广告公司记账管理软件
  • 网站建设之织梦模板广东网页空间价格
  • 南联网站建设公司wordpress 使用插件下载