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

自助做app的网站怎样做好竞价推广

自助做app的网站,怎样做好竞价推广,网站建设实训日志图文,诸城做网站建设的一、栈 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈&#…

一、栈

1.1栈的概念及结构

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。
压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。
出栈:栈的删除操作叫做出栈。出数据也在栈顶。

在这里插入图片描述

1.2栈的实现

栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。
在这里插入图片描述

1.2.1 栈的结点行为

和顺序表一样:一个存储数据的数组,一个变量记录个数,一个变量记录容量。

typedef int STDataType;
typedef struct Stack
{STDataType* data;int capacity;int top;
}ST;

1.2.2 栈的初始化与销毁

//初始化
void StackInit(ST* s)
{assert(s);s->data = NULL;s->capacity = s->top = 0;
}
//销毁
void StackDestory(ST* s)
{assert(s);free(s->data);s->data = NULL;s->capacity = s->top = 0;
}

1.2.3 入栈与出栈

//入栈
void StackPush(ST* s, STDataType x)
{assert(s);//检查是否需要扩容if (s->top == s->capacity){int new_capacity = s->capacity == 0 ? 4 : s->capacity * 2;STDataType* temp = (STDataType*)realloc(s->data, sizeof(STDataType) *new_capacity);if (temp==NULL){perror("realloc fail");exit(-1);}else{s->data = temp;s->capacity =new_capacity;}}s->data[s->top] = x;s->top++;}//出栈
void StackPop(ST* s)
{assert(s);assert(s->top);s->top -= 1;
}

1.2.4 栈的其他操作

//栈的元素个数
int StackSize(ST* s)
{assert(s);return s->top;
}
//判空
bool StackEmpty(ST* s)
{assert(s);return s->top == 0;
}
//取栈顶元素
STDataType StackTop(ST* s)
{assert(s);return s->data[s->top - 1];
}

二、队列

2.1队列的概念及结构

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)的原则。
入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头
在这里插入图片描述

2.2队列的实现

队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。
在这里插入图片描述

2.2.1 队列的结点行为

首先,我们使用链表来实现队列,那么我们需要先定义链表型结点:

typedef int QueueDataType; 
typedef struct QueueNode
{QueueDataType data;struct QueueNode* next;
}QN;

其次经过分析,我们知道入队列时就是对链表进行尾插操作,尾插的时间复杂度时O(N),因此我们想到用两个结点(一个头结点来控制出队列,一个尾结点来控制入队列)。因此我们自然而然地想起定义一个结构体来控制他们的行为:

typedef struct Queue
{QN* head;QN* tail;int size;//后续进行统计个数时时间复杂度为O(N),引入size,来提高程序效率
}Queue;

2.2.2 队列的初始化与销毁

//初始化
void QueueInit(Queue* s)
{assert(s);s->head = s->tail = NULL;s->size = 0;
}
//销毁
void QueueDestory(Queue* s)
{assert(s);QN* cur = s->head;while (cur){QN* next = cur->next;free(cur);cur = next;}s->head = s->tail = NULL;s->size = 0;
}

2.2.3 入队列与出队列

//入队
void QueuePush(Queue* s, QueueDataType x)
{assert(s);QN* newnode = (QN*)malloc(sizeof(QN));if (newnode == NULL){perror("malloc fail");exit(-1);}newnode->next = NULL;newnode->data = x;//队列是否为空if (s->tail == NULL){s->head = s->tail = newnode;}else{s->tail->next = newnode;s->tail = newnode;}s->size++;
}//出队
void QueuePop(Queue* s)
{assert(s);//队列为空时,无法再出数据assert(s->head);//队列是一个元素还是多个元素if (s->head->next == NULL){s->head = s->tail = NULL;}else{QN* next = s->head->next;free(s->head);s->head = next;}s->size--;
}

2.2.4 队列的其他操作

//队列元素个数
int QueueSize(Queue* s)
{assert(s);return s->size;
}
//判空
bool QueueEmpty(Queue* s)
{assert(s);return s->head == NULL;
}
//取队头元素
QueueDataType QueueFront(Queue* s)
{assert(s);return s->head->data;
}
//取队尾元素
QueueDataType QueueBack(Queue* s)
{assert(s);return s->tail->data;
}
http://www.dinnco.com/news/36956.html

相关文章:

  • php网站开发实例教程 pdf扫一扫识别图片
  • 广州建站推广武汉百度关键词推广
  • 经销商自己做网站合适吗黄页网络的推广网站有哪些
  • 自己做网站视频教程友情链接搜读
  • 东莞市企业网站建设哪家好营销技巧和营销方法心得
  • 织梦门户网站源码下载技能培训班有哪些
  • 长沙优化网站排名今天中国新闻
  • 重庆建设银行网站首页cpa广告联盟
  • 苏州网站建设信息网络百度外链查询工具
  • 做视频怎么去除网站百度网盘搜索引擎入口在哪
  • 精美网站制作公司经典软文案例100例
  • 网站中怎么做下载链接站长之家seo工具
  • 网站建设服务专业搜一搜百度
  • 手机免费建网站软件链爱交易平台
  • 广州市公司网站建设企业seo按天计费系统
  • 网站开发实训内容厦门seo公司到1火星
  • php电商网站开发流程图百度账号人工客服
  • 做网站支持提现支付宝深圳网站建设公司排名
  • 专业做网站建设的营销推广方式有哪些
  • dz网站首页html代码在哪谷歌搜索引擎为什么国内用不了
  • 做网站做哪个重庆seo整站优化方案范文
  • 通州网站建设多少钱国外网站建设
  • 装修公司企业网站开发规划windows优化大师和鲁大师
  • 直销平台北京如何优化搜索引擎
  • 个人网页完整代码中国seo高手排行榜
  • 一套完整的室内设计图白杨seo教程
  • 如何查看网站的浏览量郑州网站建设最便宜
  • 做企业网站哪家强网站流量排行
  • 东莞商城网站建设哪家便宜襄阳seo培训
  • pc网站做app百度一键优化