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

企业网站源码推荐赚钱一天赚300到500平台

企业网站源码推荐,赚钱一天赚300到500平台,用wordpress安全吗,东莞如何制作免费的网页1. 栈其实栈与队列仍然属于线性表(有n个元素构成的集合,逻辑结构呈现线形)线形表:顺序表,链表,栈,队列,串(字符串)栈(Stack)是一种线性…

1. 栈

        其实栈与队列仍然属于线性表(有n个元素构成的集合,逻辑结构呈现线形)

线形表:顺序表,链表,栈,队列,串(字符串)

栈(Stack)是一种线性数据结构,进行数据插入和删除的一段成为栈顶,另外一段称为栈底,数据元素遵守“后进先出” (LIFO, Last In First Out)

栈的插入数据 --压栈/进栈,入数据在栈顶

栈的删除数据 -- 出栈,出数据也在栈顶。

这里栈如何实现呢?考虑(LIFO: 后进先出)

如果是双向链表的话,无所谓栈顶与栈底的位置。

2. 栈的实现

        栈的实现利用数组实现提高内存访问效率

1、栈的初始化      

typedef int STDataType;
#define Ini_capacity 5typedef struct Stack
{int* _val;int _size;int _capacity;
}Stack;void StackInit(Stack* pst){assert(pst);// pst->_val = NULL;// pst->_capacity = 0;// pst->_size = 0;pst->_val = (STDataType*) malloc(Ini_capacity*sizeof(STDataType));if(pst->_val == NULL){perror("malloc");exit(-1);}pst->_size = 0;pst->_capacity =Ini_capacity;}

2、压栈(入栈操作)

// 入栈
void StackPush(Stack* pst,STDataType Val){assert(pst);if(pst->_size == pst->_capacity){//增容pst->_capacity = 2*pst->_capacity;STDataType* tmp = realloc(pst->_val,pst->_capacity*sizeof(STDataType));pst->_val = tmp;tmp = NULL;}pst->_val[pst->_size] = Val;pst->_size++; 
}

3、出栈操作

void StackPop(Stack* pst){assert(pst && pst->_size > 0);--pst->_size;
}

4 、返回栈内数据个数,是否为空,以及栈顶元素

//获取数据个数
int StackSize(Stack* pst){assert(pst);return(pst->_size);
}
//返回1 是空,返回0是非空
int StackEmpty(Stack* pst){assert(pst);// return pst->_size == 0 ? 1 : 0;return !pst->_size;
}
//获取栈顶数据 
STDataType StackTop(Stack* pst){assert(pst && pst->_size>0);return pst->_val[pst->_size-1];
}

5、栈的摧毁,释放空间

//栈的摧毁
void StackDestroy(Stack* pst){assert(pst);free(pst->_val);pst->_val = NULL;pst->_size =pst->_capacity = 0;
}

3、栈的常见应用:

  • 1、函数调用(函数栈帧)

  • 2、括号匹配(如表达式合法性)

  • 3、 浏览器历史记录(后退/前进)

  • 4、深度优先搜索(DFS)迷宫问题

4、队列

        队列(Queue)是一种线性数据结构:一个典型的队列有两个端:Front(队首):元素被取出的地方 Rear(队尾):元素被加入的地方。它的特点是:先进先出(FIFO, First In First Out)。

同样,队列的实现也可以通过数组和链表进行实现。?考虑(FIFO: 后进先出)。

数列出队列有些麻烦:需要挪动数据,因为队头的数据出队列后,队尾数据需要补充。

单链表入队列只需要尾插,出队列只需要将头节点给到下一个节点,然后free即可。

5、队列的实现

       队列的实现利用单向链表

1、队列的初始化 (保存队列的头指针,尾指针)

//利用单向链表的形式实现栈
typedef int QeDataType;typedef struct QueueNode
{QeDataType _data;struct QueueNode* next;
}QueueNode;
//存储队列的头,尾指针用于插入和删除队列元素
typedef struct Queue
{QueueNode* _head;QueueNode* _tail;
}Queue;//队列的初始化
void QueueInit(Queue* pq){assert(pq);pq->_head = pq->_tail = NULL;
}

2、队列新增元素

//队列插入元素
void QueuePush(Queue* pq, QeDataType x){assert(pq);QueueNode*NewNode = (QueueNode*)malloc(sizeof(QueueNode));if(NewNode == NULL){perror("malloc");exit(-1);}NewNode->next=NULL;NewNode->_data = x;if(pq->_head == NULL){pq->_head = pq->_tail = (QueueNode*)malloc(sizeof(QueueNode));}else{pq->_tail->next = NewNode;pq->_tail = NewNode;}
}

3、队列删除元素

//队列删除元素
void QueuePop(Queue* pq){assert(pq);if(pq->_head == NULL){printf("队列为空\n");exit(-1);}QueueNode* head_next = pq->_head->next;free(pq->_head);pq->_head = head_next;if(pq->_head == NULL){pq->_tail = NULL;}
}

4、取出队列头数据和尾数据

//取出队头数据
QeDataType QueueFront(Queue* pq){assert(pq);if(pq->_head ==NULL){return NULL;}return pq->_head->_data;
}
//取出队尾数据
QeDataType QueueBack(Queue* pq){assert(pq);if(pq->_tail ==NULL){return NULL;}return pq->_tail->_data;
}

5、检查队列是否为空,返回队列大小

//检查队列是否为空,返回队列大小
int QueueEmpty(Queue* pq){assert(pq);return !pq->_head;
}
int QueueSize(Queue* pq){assert(pq);if(pq == NULL){return 0;}QueueNode* Cur = pq->_head;int count =0;while(Cur || Cur != pq->_tail) {count++;Cur = Cur->next;}return count;
}

6、队列的常见应用

应用场景

描述

操作系统调度

CPU 任务调度用就绪队列

消息队列系统

线程/服务之间的数据传输

广度优先搜索(BFS)

图的遍历

打印任务排队

打印服务器依次处理任务

缓存机制(例如先进先出缓存)

维护历史数据

银行/售票排队系统

模拟现实中等待排队的流程

栈与队列,是程序运行背后的“隐形骨架”,掌握它们,你就掌握了高效处理顺序、回退、排队等核心能力,是走向算法高手的第一步。

文章转载自:

http://e8NQQVrC.yzktr.cn
http://BST6PuO4.yzktr.cn
http://BxuLWvvy.yzktr.cn
http://1MefLann.yzktr.cn
http://Q5217m6P.yzktr.cn
http://zWtnrotl.yzktr.cn
http://HmsZ3a9l.yzktr.cn
http://Sq1aseJz.yzktr.cn
http://lfiEaoqn.yzktr.cn
http://byzCGm3q.yzktr.cn
http://2F0PUvbW.yzktr.cn
http://lPoe7jL9.yzktr.cn
http://Xvf7qk9q.yzktr.cn
http://yqoqZA8S.yzktr.cn
http://fINJKC5A.yzktr.cn
http://FgxpvBAX.yzktr.cn
http://coX6Emww.yzktr.cn
http://7VYwCUre.yzktr.cn
http://kkBw57Oc.yzktr.cn
http://MQh4rM0S.yzktr.cn
http://CZcYmhV8.yzktr.cn
http://UOad6SnG.yzktr.cn
http://kbQ3kq95.yzktr.cn
http://RL478TKw.yzktr.cn
http://PSINivxQ.yzktr.cn
http://gFP9Nn2V.yzktr.cn
http://eY4VHO6m.yzktr.cn
http://IFp5s7oB.yzktr.cn
http://w80hjNlh.yzktr.cn
http://n4lIBKkq.yzktr.cn
http://www.dtcms.com/wzjs/749961.html

相关文章:

  • 高端网站定制商微信营销的优势有哪些
  • 小型求职招聘网站源码 phpcms系统创建静态网站
  • 大企业网站建设方案网站排名top排行榜
  • 个人手机版网站建设黄金网站大全免费
  • 笔趣阁 网站开发中联汇科 网站建设
  • 江门城乡建设局官方网站公司标志图片logo
  • 外贸网站自我建设与优化软件商店软件下载
  • 户外俱乐部网站模板东莞住房和城乡建设部网站
  • 单页面竞价网站十堰专业网站建设公司
  • 做视频直播的网站有哪些wordpress机械模板下载
  • 宁波网站建设报价大连网络推广平台
  • dede网站栏目管理如何建设网站开发页面适应高度
  • 南阳高质量建设大城市网站wordpress误修改
  • 网站备案主体空壳网站开发服务合同印花税
  • 东莞58同城做网站电话大庆外贸网页制作
  • 如何做门户网站php搭建网站教程
  • 天津做网站好的公司做网站建设的方案
  • 做移动网站点击软件吗unity3d做网站
  • h5免费制作网站模板wordpress 加密文章
  • 在线一键免费生成网页网站网站制作自学百度云
  • 网站开发与app开发原理杭州建设网电焊工报名入口
  • 网站建设项目确认书wordpress插件影响网站
  • 网站建设案例价位关于科技的名言
  • 我制作了一个网站平面设计速成培训机构
  • 深圳博大建设公司国内seo排名分析主要针对百度
  • 南阳网站怎么推广建站之星多语言
  • 贵阳做网站的大公司信用中国 网站有那个部门支持建设
  • 网站开发设计实训实训总结南昌网站全新开发
  • 知名的饰品行业网站开发江浦做网站
  • 上海专业做网站的wordpress的别名获得页面的别名