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

网站SEO基础代做wordpress带灯箱的主题

网站SEO基础代做,wordpress带灯箱的主题,必应网站管理员工具,网上做网站资金大概多少栈的定义 栈#xff1a;一种特殊的线性表#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO#xff08;Last In First Out#xff09;的原则。 压栈#xff1a;…栈的定义 栈一种特殊的线性表其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶另一端称为栈底。栈中的数据元素遵守后进先出LIFOLast In First Out的原则。 压栈栈的插入操作叫做进栈/压栈/入栈入数据在栈顶。 出栈栈的删除操作叫做出栈。出数据也在栈顶 可以把他想象成一个水杯 栈代码的实现 结构的定义以及函数声明 #pragma once #include stdio.h #include stdlib.h #include assert.h #include stdbool.htypedef int QueueNodeType; struct QueueNode {struct QueueNode* next;QueueNodeType data; }typedef QueueNode;//队列只需要在队尾插入队头删除不需要改变里面的内容 //所以只需要改变头尾 struct Queue {struct QueueNode* head;struct QueueNode* tail;size_t _size; }typedef Queue;// 初始化队列 void QueueInit(Queue* q); // 队尾入队列 void QueuePush(Queue* q, QueueNodeType data); // 队头出队列 void QueuePop(Queue* q); // 获取队列头部元素 QueueNodeType QueueFront(Queue* q); // 获取队列队尾元素 QueueNodeType QueueBack(Queue* q); // 获取队列中有效元素个数 size_t QueueSize(Queue* q); // 检测队列是否为空如果为空返回非零结果如果非空返回0 bool QueueEmpty(Queue* q); // 销毁队列 void QueueDestroy(Queue* q);接口的实现 #define _CRT_SECURE_NO_WARNINGS 1 #include queue.hvoid QueueInit(Queue* q) {assert(q);q-head NULL;q-tail NULL;q-_size 0; }void QueueDestroy(Queue* q) {assert(q);while (q-head){QueueNode* next q-head-next;free(q-head);q-head next;}q-tail NULL;q-_size 0; }void QueuePush(Queue* q, QueueNodeType data) {assert(q);QueueNode* newnode (QueueNode*)malloc(sizeof(QueueNode));assert(newnode);newnode-data data;newnode-next NULL;//尾插if (q-tail NULL){q-tail q-head newnode;}else{q-tail-next newnode;q-tail q-tail-next;}q-_size; }void QueuePop(Queue* q) {assert(q);assert(!QueueEmpty(q));QueueNode* newhead q-head-next;free(q-head);q-head newhead;if (q-head NULL){q-tail NULL;}q-_size--; }bool QueueEmpty(Queue* q) {assert(q);return q-head NULL; }QueueNodeType QueueFront(Queue* q) {assert(q);assert(!QueueEmpty(q));return q-head-data; }QueueNodeType QueueBack(Queue* q) {assert(q);assert(!QueueEmpty(q));return q-tail-data; }size_t QueueSize(Queue* q) {assert(q);return q-_size; }队列的定义 队列只允许在一端进行插入数据操作在另一端进行删除数据操作的特殊线性表队列具有先进先出FIFO(First In First Out) 入队列进行插入操作的一端称为队尾 出队列进行删除操作的一端称为队头 队列代码的实现 结构的定义以及函数声明 #pragma once #include stdio.h #include stdlib.h #include assert.h #include stdbool.htypedef int QueueNodeType; struct QueueNode {struct QueueNode* next;QueueNodeType data; }typedef QueueNode;//队列只需要在队尾插入队头删除不需要改变里面的内容 //所以只需要改变头尾 struct Queue {struct QueueNode* head;struct QueueNode* tail;size_t _size; }typedef Queue;// 初始化队列 void QueueInit(Queue* q); // 队尾入队列 void QueuePush(Queue* q, QueueNodeType data); // 队头出队列 void QueuePop(Queue* q); // 获取队列头部元素 QueueNodeType QueueFront(Queue* q); // 获取队列队尾元素 QueueNodeType QueueBack(Queue* q); // 获取队列中有效元素个数 size_t QueueSize(Queue* q); // 检测队列是否为空如果为空返回非零结果如果非空返回0 bool QueueEmpty(Queue* q); // 销毁队列 void QueueDestroy(Queue* q);接口的实现 #define _CRT_SECURE_NO_WARNINGS 1 #include queue.hvoid QueueInit(Queue* q) {assert(q);q-head NULL;q-tail NULL;q-_size 0; }void QueueDestroy(Queue* q) {assert(q);while (q-head){QueueNode* next q-head-next;free(q-head);q-head next;}q-tail NULL;q-_size 0; }void QueuePush(Queue* q, QueueNodeType data) {assert(q);QueueNode* newnode (QueueNode*)malloc(sizeof(QueueNode));assert(newnode);newnode-data data;newnode-next NULL;//尾插if (q-tail NULL){q-tail q-head newnode;}else{q-tail-next newnode;q-tail q-tail-next;}q-_size; }void QueuePop(Queue* q) {assert(q);assert(!QueueEmpty(q));QueueNode* newhead q-head-next;free(q-head);q-head newhead;if (q-head NULL){q-tail NULL;}q-_size--; }bool QueueEmpty(Queue* q) {assert(q);return q-head NULL; }QueueNodeType QueueFront(Queue* q) {assert(q);assert(!QueueEmpty(q));return q-head-data; }QueueNodeType QueueBack(Queue* q) {assert(q);assert(!QueueEmpty(q));return q-tail-data; }size_t QueueSize(Queue* q) {assert(q);return q-_size; }题目1括号匹配问题 题目链接https://leetcode.cn/problems/valid-parentheses/description/ 思路详解 参考代码 typedef char StackType;struct Stack {StackType* _a;int _top;int _capacity; }typedef Stack;//初始化栈 void StackInit(Stack* pStack);//入栈 void StackPush(Stack* pStack,StackType data);//出栈 void StackPop(Stack* pStack);//获取栈顶元素 StackType StackTop(const Stack* pStack);//获取栈中有效元素个数 int StackSize(const Stack* pStack);//判断栈是否为空 bool StackEmpty(Stack* pStack);//销毁栈 void StackDestroy(Stack* pStack);void StackInit(Stack* pStack) {pStack-_a NULL;pStack-_capacity 0;pStack-_top 0; }void StackPush(Stack* pStack,StackType data) {assert(pStack);if (pStack-_top pStack-_capacity){int newCapacity pStack-_capacity 0 ? 4 : pStack-_capacity * 2;StackType* newa NULL;newa (StackType*)realloc(pStack-_a, sizeof(StackType) * newCapacity);if (newa NULL){perror(StackPush():: realloc::);return;}pStack-_a newa;pStack-_capacity newCapacity;}pStack-_a[pStack-_top] data;pStack-_top; }void StackPop(Stack* pStack) {assert(pStack);assert(!StackEmpty(pStack));pStack-_top--; }StackType StackTop(const Stack* pStack) {// 因为top的初始值为0 而插入一个数据后为1// 但是所对应的数组下标为0assert(pStack);assert(!StackEmpty(pStack));return pStack-_a[pStack-_top - 1]; }int StackSize(const Stack* pStack) {return pStack-_top; }bool StackEmpty(Stack* pStack) {assert(pStack);return pStack-_top 0; }void StackDestroy(Stack* pStack) {free(pStack-_a);pStack-_capacity 0;pStack-_top 0;pStack-_a NULL; } //这里题目实现上面都是栈的实现和接口因为是C语言的关系没有STL库所以要自己造轮子 bool isValid(char* s) {Stack stack { 0 };StackInit(stack);while (*s){if (*s ( || *s { || *s [){StackPush(stack, *s);s;}else{//第一个字符为有括号证明不是有效括号直接返回NULLif(StackEmpty(stack)){//特殊案例如果是 [[]]],这里如果直接返回的话就会导致内存泄露StackDestroy(stack);return false;}StackType top StackTop(stack);StackPop(stack);if (top ( *s ! )|| top { *s ! }|| top [ *s ! ]){StackDestroy(stack);return false;}else{ s;}}}bool ret StackEmpty(stack);StackDestroy(stack);return ret;// return true; }题目2用队列实现栈 题目链接https://leetcode.cn/problems/implement-stack-using-queues/ 思路详解 参考代码 typedef int QueueNodeType; struct QueueNode {struct QueueNode* next;QueueNodeType data; }typedef QueueNode;//队列只需要在队尾插入队头删除不需要改变里面的内容 //所以只需要改变头尾 struct Queue {struct QueueNode* head;struct QueueNode* tail;size_t _size; }typedef Queue;// 初始化队列 void QueueInit(Queue* q); // 队尾入队列 void QueuePush(Queue* q, QueueNodeType data); // 队头出队列 void QueuePop(Queue* q); // 获取队列头部元素 QueueNodeType QueueFront(Queue* q); // 获取队列队尾元素 QueueNodeType QueueBack(Queue* q); // 获取队列中有效元素个数 size_t QueueSize(Queue* q); // 检测队列是否为空如果为空返回非零结果如果非空返回0 bool QueueEmpty(Queue* q); // 销毁队列 void QueueDestroy(Queue* q);void QueueInit(Queue* q) {assert(q);q-head NULL;q-tail NULL;q-_size 0; }void QueueDestroy(Queue* q) {assert(q);while (q-head){QueueNode* next q-head-next;free(q-head);q-head next;}q-tail NULL;q-_size 0; }void QueuePush(Queue* q, QueueNodeType data) {assert(q);QueueNode* newnode (QueueNode*)malloc(sizeof(QueueNode));assert(newnode);newnode-data data;newnode-next NULL;//尾插if (q-tail NULL){q-tail q-head newnode;}else{q-tail-next newnode;q-tail q-tail-next;}q-_size; }void QueuePop(Queue* q) {assert(q);assert(!QueueEmpty(q));QueueNode* newhead q-head-next;free(q-head);q-head newhead;if (q-head NULL){q-tail NULL;}q-_size--; }bool QueueEmpty(Queue* q) {assert(q);return q-head NULL; }QueueNodeType QueueFront(Queue* q) {assert(q);assert(!QueueEmpty(q));return q-head-data; }QueueNodeType QueueBack(Queue* q) {assert(q);assert(!QueueEmpty(q));return q-tail-data; }size_t QueueSize(Queue* q) {assert(q);return q-_size; }//上面是队列的接口从这里下面才开始对栈的实现 typedef struct {Queue q1;Queue q2; } MyStack;MyStack* myStackCreate() {MyStack* mystack (MyStack*)malloc(sizeof(MyStack));QueueInit(mystack-q1);QueueInit(mystack-q2);return mystack; }void myStackPush(MyStack* obj, int x) {if(QueueEmpty(obj-q1)){QueuePush(obj-q2,x);}else{QueuePush(obj-q1,x);} }int myStackPop(MyStack* obj) {//找那个是为空队列Queue* emptyQueue obj-q1;Queue* nonEmptyQueue obj-q2;if(QueueEmpty(obj-q2)){emptyQueue obj-q2;nonEmptyQueue obj-q1;}//保留非空队列中的最后一个元素其余元素转移到空队列里面while(QueueSize(nonEmptyQueue) 1){QueuePush(emptyQueue,QueueFront(nonEmptyQueue));QueuePop(nonEmptyQueue);}int ret QueueFront(nonEmptyQueue);QueuePop(nonEmptyQueue);return ret; }int myStackTop(MyStack* obj) {//两个队列中非空的那个队列的队尾就是栈顶if(QueueEmpty(obj-q1)){return QueueBack(obj-q2); }else{return QueueBack(obj-q1);} }bool myStackEmpty(MyStack* obj) {return QueueEmpty(obj-q1) QueueEmpty(obj-q2); }void myStackFree(MyStack* obj) {QueueDestroy(obj-q1);QueueDestroy(obj-q2);free(obj); } 题目3用栈实现队列 题目链接https://leetcode.cn/problems/implement-queue-using-stacks/description/ 思路详解 参考代码 typedef char StackType;struct Stack {StackType* _a;int _top;int _capacity; }typedef Stack;//初始化栈 void StackInit(Stack* pStack);//入栈 void StackPush(Stack* pStack,StackType data);//出栈 void StackPop(Stack* pStack);//获取栈顶元素 StackType StackTop(Stack* pStack);//获取栈底元素 StackType StackBottom(Stack* pStack);//获取栈中有效元素个数 int StackSize(Stack* pStack);//判断栈是否为空 bool StackEmpty(Stack* pStack);//销毁栈 void StackDestroy(Stack* pStack);void StackInit(Stack* pStack) {pStack-_a NULL;pStack-_capacity 0;pStack-_top 0; }void StackPush(Stack* pStack,StackType data) {assert(pStack);if (pStack-_top pStack-_capacity){int newCapacity pStack-_capacity 0 ? 4 : pStack-_capacity * 2;StackType* newa NULL;newa (StackType*)realloc(pStack-_a, sizeof(StackType) * newCapacity);if (newa NULL){perror(StackPush():: realloc::);return;}pStack-_a newa;pStack-_capacity newCapacity;}pStack-_a[pStack-_top] data;pStack-_top; }void StackPop(Stack* pStack) {assert(pStack);assert(!StackEmpty(pStack));pStack-_top--; }StackType StackTop(Stack* pStack) {assert(pStack);assert(!StackEmpty(pStack));// 因为top的初始值为0 而插入一个数据后为1// 但是所对应的数组下标为0return pStack-_a[pStack-_top - 1]; }StackType StackBottom(Stack* pStack) {assert(pStack);assert(!StackEmpty(pStack));return pStack-_a[0]; }int StackSize(Stack* pStack) {return pStack-_top; }bool StackEmpty(Stack* pStack) {assert(pStack);return pStack-_top 0; }void StackDestroy(Stack* pStack) {free(pStack-_a);pStack-_capacity 0;pStack-_top 0;pStack-_a NULL; }//这里开始才是实现队列的代码 typedef struct {Stack PushStack;Stack PopStack; } MyQueue;MyQueue* myQueueCreate() {MyQueue* queue (MyQueue*)malloc(sizeof(MyQueue));StackInit(queue-PushStack);StackInit(queue-PopStack);return queue; }void myQueuePush(MyQueue* obj, int x) {StackPush(obj-PushStack,x); }int myQueuePop(MyQueue* obj) {if(StackEmpty(obj-PopStack)){while(!StackEmpty(obj-PushStack)){StackPush(obj-PopStack,StackTop(obj-PushStack));StackPop(obj-PushStack);}}int popTop StackTop(obj-PopStack);StackPop(obj-PopStack);return popTop; }//返回队头 int myQueuePeek(MyQueue* obj) {if(StackEmpty(obj-PopStack)){while(!StackEmpty(obj-PushStack)){StackPush(obj-PopStack,StackTop(obj-PushStack));StackPop(obj-PushStack);}}return StackTop(obj-PopStack); }bool myQueueEmpty(MyQueue* obj) {return StackEmpty(obj-PushStack) StackEmpty(obj-PopStack); }void myQueueFree(MyQueue* obj) {StackDestroy(obj-PopStack);StackDestroy(obj-PushStack);free(obj); } 题目4设计循环队列 题目链接https://leetcode.cn/problems/design-circular-queue/description/ 思路详解 参考代码 用数组实现 typedef struct {int* _a; //数组int _head; //头下标int _tail; //尾下标int _k; //存储的元素个数 } MyCircularQueue; bool myCircularQueueIsEmpty(MyCircularQueue* obj); bool myCircularQueueIsFull(MyCircularQueue* obj);// 初始化 MyCircularQueue* myCircularQueueCreate(int k) {MyCircularQueue* cq (MyCircularQueue*)malloc(sizeof(MyCircularQueue));assert(cq);cq-_a (int*)malloc(sizeof(int) * (k 1));assert(cq-_a);cq-_head 0;cq-_tail 0;cq-_k k;return cq; }// 入队列 bool myCircularQueueEnQueue(MyCircularQueue * obj, int value) {assert(obj);if (myCircularQueueIsFull(obj)){return false;}else{obj-_a[obj-_tail] value;if (obj-_tail obj-_k){obj-_tail 0;}else{obj-_tail;}return true;} }//删队列 bool myCircularQueueDeQueue(MyCircularQueue* obj) {assert(obj);if (myCircularQueueIsEmpty(obj)){return false;}if (obj-_head obj-_k){obj-_head 0;return true;}else{obj-_head;return true;} }//队头 int myCircularQueueFront(MyCircularQueue* obj) {assert(obj);if (myCircularQueueIsEmpty(obj)){return -1; }return obj-_a[obj-_head]; }//队尾 int myCircularQueueRear(MyCircularQueue* obj) {assert(obj);if (myCircularQueueIsEmpty(obj)){return -1;}//方法1if (obj-_tail 0){return obj-_a[obj-_k];}else{return obj-_a[obj-_tail - 1];}//方法2/*int i (obj-_tail obj-_k) % (obj-_k 1);return obj-_a[i];*/ }//判空 bool myCircularQueueIsEmpty(MyCircularQueue* obj) {assert(obj);return obj-_head obj-_tail; }//判满 bool myCircularQueueIsFull(MyCircularQueue* obj) {assert(obj);return (obj-_tail 1) % (obj-_k 1) obj-_head; }//销毁 void myCircularQueueFree(MyCircularQueue* obj) {assert(obj);free(obj-_a);free(obj); }
http://www.sczhlp.com/news/171257/

相关文章:

  • php 优化网站建设游戏网站开发
  • 男女做暖暖到网站高端网约车收入怎么样
  • angularjs网站模板东营seo网站推广费用
  • wordpress 缓存用什么wordpress新站SEO优化
  • 中山做网站好的公司做网站用花瓣上的图片会侵权吗
  • 什么颜色做网站好看软件界面设计ui培训班
  • 玩转树莓派屏幕之四:适配tslib增加触屏准确度
  • 做卖车网站需要什么手续费建设网站的技术风险
  • 网站建设的概要设计欧美做暖网站
  • 电子购物网站百度贴吧网页版入口
  • 蛋糕网站建设末班网站如何做数据储存的
  • 长沙精品网站制作怎么看网站是什么程序做的
  • 网站定位策划书电子网站商业策划书
  • 北京做网站多少钱wordpress管理面板显示错乱
  • 怎么创建公司网站空间百度关键词推广怎么做
  • 北京城建亚泰建设集团有限公司网站首页wordpress菜单html5
  • 求职网站的建设方案深圳最新新闻事件
  • 上海网站营销推广想在网上做外卖 上什么网站好
  • 成都市公园城市建设局网站烟台网站推广排名
  • 小米商城网站设计论文网站反链怎么做
  • 机关 网站 建设方案模板创作师
  • 做视频网站 服务器配置wordpress免签
  • 企业网站关键词优化企业运营管理名词解释
  • 建设企业网站的常见成本有哪些wordpress功能主题
  • 不断改进网站建设微网站建设云帆网络
  • 小型企业门户网站制作什么是百度竞价排名服务
  • 什么叫精品网站建设seo工作职责
  • 网页素材网站免费保定定兴网站建设
  • 学做家庭树网站手机代理ip免费网址
  • dede wap网站模板用户体验设计师