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

如何进行网店推广成都关键词优化报价

如何进行网店推广,成都关键词优化报价,wordpress 博客编辑,做返利网站如何操作一、括号的匹配 题目介绍: 思路: 如果 c 是左括号,则入栈 push;否则通过哈希表判断括号对应关系,若 stack 栈顶出栈括号 stack.pop() 与当前遍历括号 c 不对应,则提前返回 false。栈 stack 为空&#xff1…

一、括号的匹配

题目介绍:

思路:

  1. 如果 c 是左括号,则入栈 push;
  2. 否则通过哈希表判断括号对应关系,若 stack 栈顶出栈括号 stack.pop() 与当前遍历括号 c 不对应,则提前返回 false。
  3. 栈 stack 为空: 此时 stack.pop() 操作会报错;因此,我们采用一个取巧方法,给 stack 赋初值 ?,并在哈希表 dic 中建立 key: ‘?’,value:’?’ 的对应关系予以配合。此时当 stack 为空且 c 为右括号时,可以正常提前返回 false
    字符串 s 以左括号结尾: 此情况下可以正常遍历完整个 s,但 stack 中遗留未出栈的左括号;因此,最后需返回 len(stack) == 1,以判断是否是有效的括号组合
typedef int STDataType;
//动态存储结构
typedef struct Stack
{STDataType *a;int top;int capacity;  //容量
}ST;void STInit(ST* ps);      //初始化栈
void STDestory(ST* ps);   //销毁栈
bool STEmpty(ST* ps);     //判断是否为空
void STPush(ST* ps, STDataType x);      //入栈
void STPop(ST* ps);       //出栈
STDataType STTop(ST* ps); //取栈顶元素
int STSize(ST* ps);       //返回栈元素个数void STInit(ST* ps)     //初始化栈
{assert(ps);ps->a = NULL;ps->top = 0;ps->capacity = 0;
}void STDestory(ST* ps)   //销毁栈
{assert(ps);free(ps->a);ps->a = NULL;ps->top = 0;ps->capacity = 0;
}bool STEmpty(ST* ps)    //判断是否为空
{assert(ps);return (ps->top == 0);
}void STPush(ST* ps, STDataType x)      //入栈
{assert(ps);//扩容if (ps->top == ps->capacity){int newcapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;STDataType* tem = (STDataType*)realloc(ps->a,sizeof(STDataType)* newcapacity);if (tem == NULL){perror("malloc");exit(-1);}ps->a = tem;ps->capacity = newcapacity;}ps->a[ps->top] = x;ps->top++;
}void STPop(ST* ps)     //出栈
{assert(ps);assert(ps->top>0);--ps->top;
}STDataType STTop(ST* ps) //取栈顶元素
{assert(ps);assert(ps->top > 0);return ps->a[ps->top-1];
}int STSize(ST* ps)       //返回栈元素个数
{assert(ps);return ps->top ;
}
bool isValid(char * s)
{char topval;ST st;STInit(&st);while(*s){if(*s=='('||*s=='['||*s=='{'){STPush(&st, *s);}else{if(STEmpty(&st)){STDestory(&st);return false;}topval=STTop(&st);STPop(&st);if((*s=='}'&&topval!='{')||(*s==')'&&topval!='(')||(*s==']'&&topval!='[')){STDestory(&st);return false;}}++s;}bool ret=STEmpty(&st);STDestory(&st);return ret;
}

 二、队列实现栈

题目介绍:


 

typedef 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 QueueDestory(Que* pq);          //销毁队列 
bool QueueEmpty(Que* pq);            //判断队列是否为空
void QueuePush(Que* pq, QDataType x);//进队列
void QueuePop(Que* pq);              //出队列
QDataType QueueFront(Que* pq);       //取队头元素
QDataType QueueBack(Que* pq);        //取队尾元素
int QueueSize(Que* pq);              //返回元素个数
void QueueInit(Que* pq)             //初始化队列
{assert(pq);pq->head = NULL;pq->tail = NULL;pq->size = 0;
}void QueueDestory(Que* pq)          //销毁队列 
{assert(pq);QNode* cur =pq->head;while (cur){QNode* next = cur->next;free(cur);cur = next;}pq->head = pq->tail = NULL;pq->size = 0;
}bool QueueEmpty(Que* pq)            //判断队列是否为空
{assert(pq);return pq -> head == NULL;
}void QueuePush(Que* pq, QDataType x)//进队列
{//尾插assert(pq);QNode* newnode = (QNode*)malloc(sizeof(QNode));if (newnode == NULL){perror("malloc");exit(-1);}newnode->data = x;newnode->next = NULL;if (pq->tail == NULL){pq->head = pq->tail = newnode;}else{pq->tail->next = newnode;pq->tail = newnode;}pq->size++;}void QueuePop(Que* pq)             //出队列
{assert(pq);assert(!QueueEmpty(pq));if (pq->head->next == NULL){free(pq->head);pq->head = pq->tail=NULL;}else{QNode* next = pq->head->next;free(pq->head);pq->head = next;}pq->size--;
}QDataType QueueFront(Que* pq)       //取队头元素
{assert(pq);assert(!QueueEmpty(pq));return pq->head->data;
}QDataType QueueBack(Que* pq)        //取队尾元素
{assert(pq);assert(!QueueEmpty(pq));return pq->tail->data;
}int QueueSize(Que* pq)              //返回元素个数
{assert(pq);return pq->size;
}
typedef struct 
{Que q1;Que q2;
} MyStack;MyStack* myStackCreate() 
{MyStack*pst=(MyStack*)malloc(sizeof(MyStack));QueueInit(&pst->q1);QueueInit(&pst->q2);return pst;
}void myStackPush(MyStack* obj, int x) 
{if(!QueueEmpty(&obj->q1)){QueuePush(&obj->q1,x);}else{QueuePush(&obj->q2,x);}
}int myStackPop(MyStack* obj) 
{Que*empty=&obj->q1;Que*nonEmpty=&obj->q2;if(!QueueEmpty(&obj->q1)){nonEmpty=&obj->q1;empty=&obj->q2;}while(QueueSize(nonEmpty)>1){QueuePush(empty,QueueFront(nonEmpty));QueuePop(nonEmpty);}int top=QueueFront(nonEmpty);QueuePop(nonEmpty);return top;
}int myStackTop(MyStack* obj) 
{if(!QueueEmpty(&obj->q1)){return QueueBack(&obj->q1);}else{return QueueBack(&obj->q2);}
}bool myStackEmpty(MyStack* obj) 
{return QueueEmpty(&obj->q1)&&QueueEmpty(&obj->q2);
}void myStackFree(MyStack* obj) 
{QueueDestory(&obj->q1);QueueDestory(&obj->q2);free(obj);
}/*** Your MyStack struct will be instantiated and called as such:* MyStack* obj = myStackCreate();* myStackPush(obj, x);* int param_2 = myStackPop(obj);* int param_3 = myStackTop(obj);* bool param_4 = myStackEmpty(obj);* myStackFree(obj);
*/

三、栈实现队列

题目介绍:

思路:

因为队列先进先出,栈先进后出,所以用两个栈实现队列。栈s1用来入队,栈s2用来出队。

入队:对入队的栈s1直接进行元素入栈。

出队:当出队的栈s2不为空时,s2直接出栈;若s2为空,将s1的元素都导入出队的栈s2里,然后s2进行出栈。、

在入队1、2、3、4后出队,如图所示:s1中的数据都入栈s2(s1,s2中的数据相同,顺序相反,例:s1中的栈底元素1出现在s2中的栈顶),此时s1的top==0(top表示栈中有多少元素,0代表栈中元素都已经出栈),s2的top==3(本来有4个数据,但栈顶元素已经出栈,所以为3).

typedef int STDataType;
typedef struct Stack
{STDataType *a;int top;int capacity;  //容量
}ST;void STInit(ST* ps);      //初始化栈
void STDestory(ST* ps);   //销毁栈
bool STEmpty(ST* ps);     //判断是否为空
void STPush(ST* ps, STDataType x);      //入栈
void STPop(ST* ps);       //出栈
STDataType STTop(ST* ps); //取栈顶元素
int STSize(ST* ps);       //返回栈元素个数void STInit(ST* ps)     //初始化栈
{assert(ps);ps->a = NULL;ps->top = 0;ps->capacity = 0;
}void STDestory(ST* ps)   //销毁栈
{assert(ps);free(ps->a);ps->a = NULL;ps->top = 0;ps->capacity = 0;
}bool STEmpty(ST* ps)    //判断是否为空
{assert(ps);return (ps->top == 0);
}void STPush(ST* ps, STDataType x)      //入栈
{assert(ps);//扩容if (ps->top == ps->capacity){int newcapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;STDataType* tem = (STDataType*)realloc(ps->a,sizeof(STDataType)* newcapacity);if (tem == NULL){perror("malloc");exit(-1);}ps->a = tem;ps->capacity = newcapacity;}ps->a[ps->top] = x;ps->top++;
}void STPop(ST* ps)     //出栈
{assert(ps);assert(ps->top>0);--ps->top;
}STDataType STTop(ST* ps) //取栈顶元素
{assert(ps);assert(ps->top > 0);return ps->a[ps->top-1];
}int STSize(ST* ps)       //返回栈元素个数
{assert(ps);return ps->top ;
}
typedef struct 
{ST pushst;ST popst;
} MyQueue;MyQueue* myQueueCreate() 
{MyQueue*obj=(MyQueue*)malloc(sizeof(MyQueue));STInit(&obj->pushst);STInit(&obj->popst);return obj;
}void myQueuePush(MyQueue* obj, int x) 
{STPush(&obj->pushst,x);
}int myQueuePeek(MyQueue* obj)  //取对头数据
{if(STEmpty(&obj->popst)){while(!STEmpty(&obj->pushst)){STPush(&obj->popst,STTop(&obj->pushst));STPop(&obj->pushst);}}return STTop(&obj->popst);
}int myQueuePop(MyQueue* obj) 
{int front =myQueuePeek(obj);STPop(&obj->popst);return front;
}bool myQueueEmpty(MyQueue* obj) 
{return STEmpty(&obj->popst)&&STEmpty(&obj->pushst);
}void myQueueFree(MyQueue* obj) 
{STDestory(&obj->popst);STDestory(&obj->pushst);free(obj);
}/*** Your MyQueue struct will be instantiated and called as such:* MyQueue* obj = myQueueCreate();* myQueuePush(obj, x);* int param_2 = myQueuePop(obj);* int param_3 = myQueuePeek(obj);* bool param_4 = myQueueEmpty(obj);* myQueueFree(obj);
*/

四、循环队列

题目介绍:

设计一个队列,这个队列的大小是固定的,且队列头尾相连, 然后该队列能够实现题目中的操作。

那么是使用数组实现,还是用链表实现呢?我们接着往下看。

环形队列的几个判断条件

front:指向队列的第一个元素,初始值front=0

rear: 指向队列的最后一个元素的后一个位置(预留一个空间作为约定),初始值rear=0

maxSize: 数组的最大容量

  • 队空:front == rear

  • 队满:(rear+1)%maxSize == front

  • 队列中的有效数据个数:(rear+maxSize-front)% maxSize

 其中判断队列满的思想的话,可以看下图,因为是环形的,起初front=rear=0,每当添加元素时,将rear++,但是其实预留了一个长度没有用,比如定义的队列数组长度为5时,但是实际上可以使用的地址就是0,1,2,3,此时rear=4, 4这个空间用来判断队满的条件(rear+1)%maxSize==front


有了上面的铺垫就可以很轻松的写出下面的函数。

typedef struct 
{int *a;int front;int rear;int k;
} MyCircularQueue;MyCircularQueue* myCircularQueueCreate(int k) 
{MyCircularQueue*obj=(MyCircularQueue*)malloc(sizeof(MyCircularQueue));//多开一个空间(浪费掉)为了区分空和满obj->a=(int*)malloc(sizeof(int)*(k+1));obj->front=obj->rear=0;obj->k=k;return obj;
}bool myCircularQueueIsEmpty(MyCircularQueue* obj) 
{return obj->front==obj->rear;
}bool myCircularQueueIsFull(MyCircularQueue* obj) 
{return (obj->rear+1)%(obj->k+1)==obj->front;
}bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) 
{if(myCircularQueueIsFull(obj)){return false;}obj->a[obj->rear]=value;obj->rear++;obj->rear%=(obj->k+1);return true; 
}bool myCircularQueueDeQueue(MyCircularQueue* obj) 
{if(myCircularQueueIsEmpty(obj)){return false;}++obj->front;obj->front%=(obj->k+1);return true;
}int myCircularQueueFront(MyCircularQueue* obj) 
{if(myCircularQueueIsEmpty(obj)){return -1;}return obj->a[obj->front];
}int myCircularQueueRear(MyCircularQueue* obj) 
{if(myCircularQueueIsEmpty(obj)){return -1;}return obj->a[(obj->rear+(obj->k+1)-1)%(obj->k+1)];
}void myCircularQueueFree(MyCircularQueue* obj) 
{free(obj->a);free(obj);
}/*** Your MyCircularQueue struct will be instantiated and called as such:* MyCircularQueue* obj = myCircularQueueCreate(k);* bool param_1 = myCircularQueueEnQueue(obj, value);* bool param_2 = myCircularQueueDeQueue(obj);* int param_3 = myCircularQueueFront(obj);* int param_4 = myCircularQueueRear(obj);* bool param_5 = myCircularQueueIsEmpty(obj);* bool param_6 = myCircularQueueIsFull(obj);* myCircularQueueFree(obj);
*/


文章转载自:
http://wanjiasanctification.hwbf.cn
http://wanjiabackwoodsy.hwbf.cn
http://wanjiacalculus.hwbf.cn
http://wanjialase.hwbf.cn
http://wanjiaunion.hwbf.cn
http://wanjiaremovability.hwbf.cn
http://wanjiamethaemoglobin.hwbf.cn
http://wanjiagildsman.hwbf.cn
http://wanjiapeahen.hwbf.cn
http://wanjiascopes.hwbf.cn
http://wanjiaforeboding.hwbf.cn
http://wanjiawunderkind.hwbf.cn
http://wanjiadetchable.hwbf.cn
http://wanjiahillcrest.hwbf.cn
http://wanjiadeveloping.hwbf.cn
http://wanjiacharta.hwbf.cn
http://wanjialupine.hwbf.cn
http://wanjiauncalled.hwbf.cn
http://wanjiagin.hwbf.cn
http://wanjiapulpy.hwbf.cn
http://wanjiaoxydation.hwbf.cn
http://wanjiainfelicific.hwbf.cn
http://wanjialogaoedic.hwbf.cn
http://wanjiatorino.hwbf.cn
http://wanjiaunbonnet.hwbf.cn
http://wanjiatask.hwbf.cn
http://wanjiadracaena.hwbf.cn
http://wanjiaseti.hwbf.cn
http://wanjiamopy.hwbf.cn
http://wanjiadahlak.hwbf.cn
http://wanjiataaffeite.hwbf.cn
http://wanjiasecrete.hwbf.cn
http://wanjiapakistani.hwbf.cn
http://wanjiatheorbo.hwbf.cn
http://wanjiaconnatural.hwbf.cn
http://wanjiadavid.hwbf.cn
http://wanjiaedginess.hwbf.cn
http://wanjiareinject.hwbf.cn
http://wanjiaspherics.hwbf.cn
http://wanjiaanthropogeography.hwbf.cn
http://wanjiascrupulosity.hwbf.cn
http://wanjiasurrounding.hwbf.cn
http://wanjianemoricolous.hwbf.cn
http://wanjiakoine.hwbf.cn
http://wanjiamanichee.hwbf.cn
http://wanjianutrient.hwbf.cn
http://wanjiasestertius.hwbf.cn
http://wanjiacarlylese.hwbf.cn
http://wanjiamollisol.hwbf.cn
http://wanjiahymnodist.hwbf.cn
http://wanjiamim.hwbf.cn
http://wanjiachristie.hwbf.cn
http://wanjiaaperiodic.hwbf.cn
http://wanjiahibernian.hwbf.cn
http://wanjiatholobate.hwbf.cn
http://wanjiaphew.hwbf.cn
http://wanjiajangle.hwbf.cn
http://wanjiapercuss.hwbf.cn
http://wanjiastraggling.hwbf.cn
http://wanjiatelestich.hwbf.cn
http://wanjialangobardic.hwbf.cn
http://wanjiapoppet.hwbf.cn
http://wanjiamspe.hwbf.cn
http://wanjiaspringlet.hwbf.cn
http://wanjiaparseval.hwbf.cn
http://wanjiahuanaco.hwbf.cn
http://wanjialectrice.hwbf.cn
http://wanjiademitasse.hwbf.cn
http://wanjiatreadle.hwbf.cn
http://wanjiaunabiding.hwbf.cn
http://wanjiaastronautics.hwbf.cn
http://wanjiaacapnia.hwbf.cn
http://wanjiasapphism.hwbf.cn
http://wanjiagunrunning.hwbf.cn
http://wanjiaoncogenicity.hwbf.cn
http://wanjiabarbarity.hwbf.cn
http://wanjiabiographee.hwbf.cn
http://wanjiaamplifier.hwbf.cn
http://wanjiazebrine.hwbf.cn
http://wanjiaclime.hwbf.cn
http://www.15wanjia.com/news/108412.html

相关文章:

  • 直播视频网站源码新闻最新消息10条
  • 网站为什么做版心限制福建省人民政府门户网站
  • 西安演出公司网站建设做网络推广费用
  • wordpress垃圾评论删除网站seo完整seo优化方案
  • 青岛做企业网站的公司百度快照网站
  • wordpress empty优化公司组织架构
  • 杭州网站建设 网络服务怎样做产品推广
  • 做网站是互联网开发吗济南网站运营公司
  • 网站上传图片要求网推放单平台
  • 还有哪些网站可以做淘宝活动吗抖音自动推广引流app
  • 网站后台无法更新缓存互联网宣传方式有哪些
  • 网站浏览器兼容性百度云资源搜索引擎
  • 公司网站的宣传栏怎么做上海牛巨微网络科技有限公司
  • 网站建设合同注意点软件推广是什么工作
  • 公安系统网站备案网站seo分析报告案例
  • 建网站买的是什么网站seo啥意思
  • 阜阳做网站的公司营销培训
  • 班级网站设计模板个人如何做百度推广
  • 网站引导页在线做花西子网络营销案例分析
  • 网站里的地图定位怎么做100%能上热门的文案
  • 国家信息网aso优化教程
  • 东莞定制网站建设51外链代发网
  • 浦东教育网站官网独立站seo
  • 坂田做网站多少钱游戏推广员到底犯不犯法
  • 租电信服务器开网站百度托管公司
  • 如何做充值网站淘宝关键词指数
  • 电脑网站安全证书有问题如何解决广告设计与制作
  • 做店铺图片什么网站网络营销与直播电商好就业吗
  • 罗马柱 东莞网站建设七牛云
  • 网站建设的网站分析怎么写windows优化大师怎么下载