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

深圳住房建设局网站在线做ppt模板下载网站有哪些

深圳住房建设局网站,在线做ppt模板下载网站有哪些,网站设计公司有名乐云seo,seo排名关键词栈和队列 1.栈1.1栈的概念和结构1.2栈的实现 2.队列2.1队列的概念和结构2.2队列的实现 1.栈 1.1栈的概念和结构 栈#xff1a;一种特殊的线性表#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶#xff0c;另一端称为栈底。… 栈和队列 1.栈1.1栈的概念和结构1.2栈的实现 2.队列2.1队列的概念和结构2.2队列的实现 1.栈 1.1栈的概念和结构 栈一种特殊的线性表其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶另一端称为栈底。栈中的数据元素遵守后进先出LIFOLast In First Out的原则。 压栈栈的插入操作叫做进栈/压栈/入栈入数据在栈顶。 出栈栈的删除操作叫做出栈。出数据也在栈顶。 1.2栈的实现 栈的实现一般可以使用数组或者链表实现相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小 Stack.h #includestdio.h #includestdlib.h #includeassert.h #includestdbool.htypedef int STDateType; typedef struct Stack {STDateType* a;int top;int capacity; }ST;//初始化 void STInit(ST* ps);//销毁 void STDestroy(ST* ps);//入栈 void STPush(ST* ps, STDateType x);//出栈 void STPop(ST* ps);//栈顶 STDateType SLTTop(ST* ps);//计算大小 int STSize(ST* ps);//判断是否为空 bool STEmpty(ST* ps);Stack.c #includeStack.h//初始化 void STInit(ST* ps) {assert(ps);ps-capacity NULL;ps-a 0;ps-top 0; }//销毁 void STDestroy(ST* ps) {assert(ps);free(ps-a);ps-a NULL;ps-capacity ps-top 0; }//入栈 void STPush(ST* ps, STDateType x) {assert(ps);if (ps-top ps-capacity){int NewCapacity ps-capacity 0 ? 4 : ps-capacity * 2;STDateType* tmp (STDateType*)realloc(ps-a, sizeof(STDateType) * NewCapacity);if (tmp NULL){perror(realloc fail);exit(-1);}ps-a tmp;ps-capacity NewCapacity;}ps-a[ps-top] x;ps-top; }//出栈 void STPop(ST* ps) {assert(ps);assert(ps-a 0);--ps-top; }//栈顶 STDateType STTop(ST* ps) {assert(ps);assert(ps-a 0);return ps-a[ps-top - 1]; }//计算 int STSize(ST* ps) {assert(ps);return ps-top; }//判断是否为空 bool STEmpty(ST* ps) {assert(ps);return ps-top NULL; }test.c #includeStack.hvoid TestStack() {ST st;STInit(st);STPush(st, 1);STPush(st, 2);STPush(st, 3);STPush(st, 4);STPush(st, 5);while (!STEmpty(st)){printf(%d , STTop(st));STPop(st);}printf(\n);STDestroy(st); }int main() {TestStack();return 0; }2.队列 2.1队列的概念和结构 队列只允许在一端进行插入数据操作在另一端进行删除数据操作的特殊线性表队列具有先进先出FIFO(First In First Out) 入队列进行插入操作的一端称为队尾出队列进行删除操作的一端称为队头 2.2队列的实现 队列也可以数组和链表的结构实现使用链表的结构实现更优一些因为如果使用数组的结构出队列在数组头上出数据效率会比较低。 Queue.h #includestdio.h #includestdlib.h #includeassert.h #includestdbool.h 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 QueueDestroy(Que* pq); void QueuePush(Que* pq, QDataType x); void QueuePop(Que* pq); QDataType QueueFront(Que* pq); QDataType QueueBack(Que* pq); bool QueueEmpty(Que* pq); int QueueSize(Que* pq);Queue.c #includeQueue.h//初始化 void QueueInit(Que* pq) {assert(pq);pq-head pq-tail NULL;pq-size 0; }//销毁 void QueueDestroy(Que* pq) {assert(pq);QNode* cur pq-head;while (cur){QNode* next cur-next;free(cur);cur cur-next;}pq-head pq-tail NULL;pq-size 0; }//入队 void QueuePush(Que* pq, QDateType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail);exit(-1);}newnode-date 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){pq-head pq-tail NULL;}else{QNode* next pq-head-next;free(pq-head);pq-head next;}pq-size--; }//队头 QDateType QueueFront(Que* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-head-date; }//队尾 QDateType QueueBack(Que* pq) {assert(pq);assert(!QueueEmpty);return pq-tail-date; }//判断是否为空 bool QueueEmpty(Que* pq) {assert(pq);return pq-head NULL; }//计算 int QueueSize(Que* pq) {assert(pq);return pq-size; }test.c #includeQueue.hvoid QueueTest() {Que pq;QueueInit(pq);QueuePush(pq, 1);QueuePush(pq, 2);QueuePush(pq, 3);QueuePush(pq, 4);while (!QueueEmpty(pq)){printf(%d , QueueFront(pq));QueuePop(pq);}printf(\n);QueueDestroy(pq); }int main() {QueueTest();return 0; }3.栈和队列面试题 3.1括号匹配问题 OJ #includestdio.h #includestdlib.h #includeassert.h #includestdbool.h //有效括号 typedef char STDateType; typedef struct Stack {STDateType* a;int top;int capacity; }ST; //初始化 void STInit(ST* ps); //销毁 void STDestroy(ST* ps); //入栈 void STPush(ST* ps, STDateType x); //出栈 void STPop(ST* ps); //栈顶 STDateType SLTTop(ST* ps); //计算大小 int STSize(ST* ps); //判断是否为空 bool STEmpty(ST* ps);//初始化 void STInit(ST* ps) {assert(ps);ps-capacity NULL;ps-a 0;ps-top 0; } //销毁 void STDestroy(ST* ps) {assert(ps);free(ps-a);ps-a NULL;ps-capacity ps-top 0; } //入栈 void STPush(ST* ps, STDateType x) {assert(ps);if (ps-top ps-capacity){int NewCapacity ps-capacity 0 ? 4 : ps-capacity * 2;STDateType* tmp (STDateType*)realloc(ps-a, sizeof(STDateType) * NewCapacity);if (tmp NULL){perror(realloc fail);exit(-1);}ps-a tmp;ps-capacity NewCapacity;}ps-a[ps-top] x;ps-top; } //出栈 void STPop(ST* ps) {assert(ps);assert(ps-a 0);--ps-top; } //栈顶 STDateType STTop(ST* ps) {assert(ps);assert(ps-a 0);return ps-a[ps-top - 1]; } //计算 int STSize(ST* ps) {assert(ps);return ps-top; } //判断是否为空 bool STEmpty(ST* ps) {assert(ps);return ps-top NULL; }bool isValid(char* s) {ST st;STInit(st);char topVal;while (*s){//数量不匹配if (*s ( || *s [ || *s {){STPush(st, *s);}else{if (STEmpty(st)){STDestroy(st);return false;}topVal STTop(st);STPop(st);if ((*s ) topVal ! () || (*s ] topVal ! [) || (*s } topVal ! {)){STDestroy(st);return false;}}s;}//栈不为空false,说明数量不匹配bool ret STEmpty(st);STDestroy(st);return ret; }int main() {isValid([(({})}]);#includestdio.h #includestdlib.h #includeassert.h #includestdbool.h typedef int STDateType; typedef struct Stack {STDateType* a;int top;int capacity; }ST; //初始化 void STInit(ST* ps); //销毁 void STDestroy(ST* ps); //入栈 void STPush(ST* ps, STDateType x); //出栈 void STPop(ST* ps); //栈顶 STDateType SLTTop(ST* ps); //计算大小 int STSize(ST* ps); //判断是否为空 bool STEmpty(ST* ps); //初始化 void STInit(ST* ps) {assert(ps);ps-capacity NULL;ps-a 0;ps-top 0; } //销毁 void STDestroy(ST* ps) {assert(ps);free(ps-a);ps-a NULL;ps-capacity ps-top 0; } //入栈 void STPush(ST* ps, STDateType x) {assert(ps);if (ps-top ps-capacity){int NewCapacity ps-capacity 0 ? 4 : ps-capacity * 2;STDateType* tmp (STDateType*)realloc(ps-a, sizeof(STDateType) * NewCapacity);if (tmp NULL){perror(realloc fail);exit(-1);}ps-a tmp;ps-capacity NewCapacity;}ps-a[ps-top] x;ps-top; } //出栈 void STPop(ST* ps) {assert(ps);assert(ps-a 0);--ps-top; } //栈顶 STDateType STTop(ST* ps) {assert(ps);assert(ps-a 0);return ps-a[ps-top - 1]; } //计算 int STSize(ST* ps) {assert(ps);return ps-top; } //判断是否为空 bool STEmpty(ST* ps) {assert(ps);return ps-top NULL; } typedef struct {ST pushst;ST popst; } MyQueue; MyQueue* myQueueCreate() {MyQueue* obj (MyQueue*)malloc(sizeof(MyQueue));STInit(obj-popst);STInit(obj-pushst);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) {STDestroy(obj-popst);STDestroy(obj-pushst);free(obj); }}3.2用队列实现栈 OJ 3.3用栈实现队列 OJ #includestdio.h #includestdlib.h #includeassert.h #includestdbool.h typedef int STDateType; typedef struct Stack {STDateType* a;int top;int capacity; }ST; //初始化 void STInit(ST* ps); //销毁 void STDestroy(ST* ps); //入栈 void STPush(ST* ps, STDateType x); //出栈 void STPop(ST* ps); //栈顶 STDateType SLTTop(ST* ps); //计算大小 int STSize(ST* ps); //判断是否为空 bool STEmpty(ST* ps); //初始化 void STInit(ST* ps) {assert(ps);ps-capacity NULL;ps-a 0;ps-top 0; } //销毁 void STDestroy(ST* ps) {assert(ps);free(ps-a);ps-a NULL;ps-capacity ps-top 0; } //入栈 void STPush(ST* ps, STDateType x) {assert(ps);if (ps-top ps-capacity){int NewCapacity ps-capacity 0 ? 4 : ps-capacity * 2;STDateType* tmp (STDateType*)realloc(ps-a, sizeof(STDateType) * NewCapacity);if (tmp NULL){perror(realloc fail);exit(-1);}ps-a tmp;ps-capacity NewCapacity;}ps-a[ps-top] x;ps-top; } //出栈 void STPop(ST* ps) {assert(ps);assert(ps-a 0);--ps-top; } //栈顶 STDateType STTop(ST* ps) {assert(ps);assert(ps-a 0);return ps-a[ps-top - 1]; } //计算 int STSize(ST* ps) {assert(ps);return ps-top; } //判断是否为空 bool STEmpty(ST* ps) {assert(ps);return ps-top NULL; } typedef struct {ST pushst;ST popst; } MyQueue; MyQueue* myQueueCreate() {MyQueue* obj (MyQueue*)malloc(sizeof(MyQueue));STInit(obj-popst);STInit(obj-pushst);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) {STDestroy(obj-popst);STDestroy(obj-pushst);free(obj); } 3.4设计循环队列 OJ #includestdio.h #includestdlib.h #includeassert.h #includestdbool.h //计循环队列 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) % (obj-k 1)]; }void myCircularQueueFree(MyCircularQueue* obj) {free(obj-a);free(obj); } 不知不觉【数据结构初阶】栈和队列以告一段落。通读全文的你肯定收获满满让我们继续为数据结构学习共同奋进!!!
http://www.hkea.cn/news/14398209/

相关文章:

  • 电子商务网站建设课程的心得大连开发网站建设
  • 网上有免费的网站吗网络推广怎么入门
  • 浙江城乡建设部网站首页什么网站程序好
  • 龙岩网站设计怎么注册一个自己的平台
  • 网站建设的团队分工网站流量 盈利
  • 陕西网站开发公司fullpage网站
  • 网站建设汽车后市场分析公司注册地址提供
  • 南宁手机网站设计策划网站搭建详细步骤
  • 网站建设利润ps网站首页直线教程
  • 企业网站建设硬件买源码做网站简单嘛
  • 怎么做潮牌网站wordpress实战教程pdf
  • 网站制作售后在线商城网站开发代码
  • 网站建设一般多少钱新闻设计素材网站合集
  • 做一个招聘信息的网站_用什么做网站的软件临时网站搭建
  • 好看的网站颜色搭配南京网站设计制作公司排名
  • 上传商品的网站株洲seo网站推广
  • 网站的程序怎么做的南京教育网站开发
  • 自己做网站需要花钱吗北京建站模板展示
  • 什么网站可以做兼职美工网站开发需要注意什么
  • 九江市建设工程质量监督站网站wordpress引导页
  • 建设网站怎么加购物车连云港做网站推广
  • 山东建设工程信息网站wordpress免费简约主题
  • 个人建站教程包头企业做网站
  • 福州市建设工程工料机信息网站黄页88网是什么性质的网站
  • 湖南省建设工程网站做推广怎么赚钱
  • 网站开发怎么入账软考证书有用吗张雪峰
  • 广州西樵网站制作wordpress需要会php吗
  • 团购网站开发语言微网建设管理系统
  • 南京外贸网站建设怎么收费网站建设 如何友情链接
  • 巴中市建设厅官方网站徐州鸿美网站建设