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

十大购物网站排行榜苏州三石网络科技有限公司

十大购物网站排行榜,苏州三石网络科技有限公司,河南专业网站建设公司首选,苏州建设网站的公司目录 栈 基本概念 栈的常见基本操作 栈的存储 ✌栈的基本操作实现 栈的构建 栈的初始化 入栈 打印栈 出栈 获取栈顶元素 获取栈的有效元素个数 判断栈是否为空 销毁栈 队列 基本概念 队列的常见基本操作 ✌队列的基本操作实现 队列的构建 初始化 入队列 出… 目录 栈 基本概念 栈的常见基本操作  栈的存储 ✌栈的基本操作实现 栈的构建 栈的初始化  入栈 打印栈  出栈 获取栈顶元素 获取栈的有效元素个数 判断栈是否为空 销毁栈 队列 基本概念 队列的常见基本操作 ✌队列的基本操作实现 队列的构建 初始化 入队列 出队列 获取头部元素 获取队尾元素 获取有效元素个数 判断是否为空 销毁队列 栈 基本概念 定义 是只允许在一端进行插入或删除的线性表 栈顶线性表允许进行插入删除的那一端。空栈不含任何元素的空表。  栈是先进后出的的线性表 栈的常见基本操作  InitStack(S)           初始化一个空栈S。StackEmpty(S)        判断一个栈是否为空若栈为空则返回true否则返回false。Push(S, x)             进栈栈的插入操作若栈S未满则将x加入使之成为新栈顶。Pop(S, x)            出栈栈的删除操作若栈S非空则弹出栈顶元素并用x返回。GetTop(S, x)         读栈顶元素若栈S非空则用x返回栈顶元素。DestroyStack(S)    栈销毁并释放S占用的存储空间“”表示引用调用。 栈的存储 栈的存储方式有两种顺序栈和链栈即栈的顺序存储和链式存储。 采用顺序存储的栈称为顺序栈它利用一组地址连续的存储单元存放自栈底到栈顶的元素同时附设一个指针top指示当前栈顶的位置。 ✌栈的基本操作实现 栈的构建 因为使用的是顺序栈所以可以定义动态增长的数组既然是数组了自然有空间是否足够的问题所以要定义个容量 capacity栈顶top // 支持动态增长的栈 typedef int STDataType; typedef struct Stack {STDataType* arr; int top; // 栈顶int capacity; // 容量 }Stack; 栈的初始化  这里的top可以定义成0或者-1不过后面的操作需要稍微变化 // 初始化栈 void StackInit(Stack* ps) {assert(ps);assert(ps);ps-arr NULL;ps-capacity 0;ps-top -1; //表示栈顶元素 } 入栈 这里注意top的不同因为是顺序栈所以要检查容量是否足够 // 入栈 void StackPush(Stack* ps, STDataType data) {//检查容量if (ps-top 1 ps-capacity) //top表示的是栈顶元素先top,再插入的所以检查1位置是否可用{int newcapacity ps-capacity 0 ? 4 : ps-capacity * 2;STDataType* newnode (STDataType*)realloc(ps-arr,sizeof(STDataType) * newcapacity);assert(newnode); //七匹狼式检查是否开辟成功ps-arr newnode;ps-capacity newcapacity;}ps-top;ps-arr[ps-top] data; } 打印栈  //打印 void StackPrint(Stack* ps) {assert(ps);int i ps-top;while (i0){printf(%d , ps-arr[i]);i--;}printf(\n); } 出栈 // 出栈 void StackPop(Stack* ps) {assert(ps);assert(ps-top 0);ps-top--; } 获取栈顶元素 // 获取栈顶元素 STDataType StackTop(Stack* ps) {assert(ps);assert(ps-top 0);return ps-arr[ps-top]; } 获取栈的有效元素个数 // 获取栈中有效元素个数 int StackSize(Stack* ps) {assert(ps);assert(ps-top 0);return ps-top 1; } 判断栈是否为空 // 检测栈是否为空如果为空返回非零结果如果不为空返回0 bool StackEmpty(Stack* ps) {assert(ps);if (ps-top 0) //为空{return true;}else{return false;} }销毁栈 // 销毁栈 void StackDestroy(Stack* ps) {assert(ps);ps-capacity 0;ps-top -1;free(ps-arr);ps-arr NULL; } 队列 基本概念 定义队列queue是只允许在一端进行插入操作而在另一端进行删除操作的线性表。 队列是一种先进先出First In First Out的线性表简称FIFO。允许插入的一端称为队尾允许删除的一端称为队头。 队列的常见基本操作 InitQueue(Q)           初始化队列构造一个空队列Q。QueueEmpty(Q)        判队列空若队列Q为空返回true否则返回false。EnQueue(Q, x)       入队若队列Q未满将x加入使之成为新的队尾。DeQueue(Q, x)     出队若队列Q非空删除队头元素并用x返回。GetHead(Q, x)        读队头元素若队列Q非空则将队头元素赋值给x。 ✌队列的基本操作实现 队列的构建 typedef int QueueDataType; // 链式结构表示队列 typedef struct QueueNode {QueueDataType val;struct QueueNode* next; }QNode;// 队列的结构 typedef struct Queue {QNode* head;QNode* tail;int size; //队列的长度大小 }Queue; 初始化 // 初始化队列 void QueueInit(Queue* pq) {assert(pq);pq-head NULL;pq-tail NULL;pq-size 0; } 入队列 // 队尾入队列 void QueuePush(Queue* pq, QueueDataType data) {assert(pq);//开辟空间QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL) //检查是否开辟成功{perror(malloc fail);return;}newnode-val data;newnode-next NULL;if (pq-tail NULL) //空队列情况{pq-tail pq-head newnode; }else{pq-tail-next newnode; //链接新结点pq-tail newnode; //队尾 更新位置}pq-size; //长度 } 出队列 // 队头出队列 void QueuePop(Queue* pq) {assert(pq);QNode* tmp pq-head;pq-head pq-head-next;free(tmp);tmp NULL;if (pq-head NULL) //此时链表已经为空队尾tail是野指针{pq-tail NULL;}pq-size--; } 获取头部元素 // 获取队列头部元素 QueueDataType QueueFront(Queue* pq) {assert(pq);assert(pq-head); //检查队头不为空说明有数据存放return pq-head-val; } 获取队尾元素 // 获取队列队尾元素 QueueDataType QueueBack(Queue* pq) {assert(pq);assert(pq-tail); //检查队尾不为空说明有数据存放return pq-tail-val; } 获取有效元素个数 // 获取队列中有效元素个数 int QueueSize(Queue* pq) {assert(pq);return pq-size; } 判断是否为空 // 检测队列是否为空如果为空返回非零结果如果非空返回0 bool QueueEmpty(Queue* pq) {assert(pq);return pq-head NULL; } 销毁队列 // 销毁队列 void QueueDestroy(Queue* pq) {assert(pq);QNode* tmp pq-head;while (tmp){QNode* next tmp-next;free(tmp);tmp NULL;tmp next;}pq-head pq-tail NULL;pq-size 0; }
http://www.zqtcl.cn/news/549217/

相关文章:

  • 动态效果的网站建设技术老闵行是指哪里
  • 电商网站开发面临的技术问题做闪图的网站
  • 怎么查看网站开发语言的类型东莞哪些地方是风险区
  • 不用购买域名做网站广州网站建设培训学校
  • 城市轨道建设规范下载网站古网站典模板
  • 关于实验室建设的英文网站深圳企业网站制作公司怎样
  • wordpress全站背景音乐中山网站搜索排名
  • 搭建网站的过程透明主题wordpress
  • 丰台网站建设公司电话深圳微信商城网站设计公司
  • 做淘宝要用的网站吗上海微信网站
  • 佛山高端网站制作公司wordpress 发送邮件插件
  • 类似站酷的设计类网站网站建设需要待摊吗
  • 用php做视频网站在学做网站还不知道买什么好
  • wordpress培训类网站网站建设 好
  • 网站开发需要2个月吗网站建设案例精粹
  • 网站建设项目职责营销型网站建设五大内容
  • 建设工程监理招标网站W做网站
  • 网站建设与维护教学课件网站上线前做环境部署
  • 信誉好的网站建设做网站成为首富的外国人
  • 常州网站制作市场湖北省荆门市城乡建设网站
  • 泉州网站制作运营商专业北京软件公司招聘信息查询
  • 车床加工东莞网站建设网站建设教学改进
  • 深圳专业做网站建设西安网站建设有限公司
  • wordpress 一键建站wordpress子主题style
  • 昆明设计网站怎么做网络广告
  • 2018什么做网站深圳企业网站设
  • 北京旅游外贸网站建设博客集成wordpress
  • 中国最好的建设网站哪些网站教你做系统
  • 自己做网站别人怎么看见网站建设办公
  • 凡科做网站视频网站哪家好