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

域名备案期间怎么做网站教育网站都有哪些

域名备案期间怎么做网站,教育网站都有哪些,网络舆情的三种分类标准,关于旅游类网站建设设计方案引言 动态模拟实现栈的各个接口 一、栈的概念与结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(LastInFirstOut…

引言

        动态模拟实现栈的各个接口

一、栈的概念与结构

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

压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。

出栈:栈的删除操作叫做出栈。出数据也在栈顶。 

栈底层结构选型

        栈的实现⼀般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。而且与链表的结构体相比,数组所占内存的较小。 

 二、栈的模拟实现

因为栈是用动态数组来模拟实现的,所以顺序表要是会的话,这个是很简单的

分三个文件来写:以代码注释为主

test.c //测试文件,测试栈的接口是否正确
Stack.h //实现栈所需要的所有的头文件(核心)
Stack.c //实现栈各个接口的代码(核心)

1、在Stack.h中定义栈的结构:

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>typedef int STDataType;  //取别名,方便以后修改数据类型typedef struct Stack
{STDataType* arr;   //数组int top;           //栈的有效元素个数int capacity;      //栈的总大小
}ST;                   //取别名,方便下面代码的书写

2、栈的初始化、入栈

//初始化
void StackInit(ST* ps)
{ps->arr = NULL;      //先将数组指针设置为NULLps->top = ps->capacity = 0; //都是0
}//入栈 -- 栈顶入栈
void StackPush(ST* ps, STDataType x)
{assert(ps);if (ps->top == ps->capacity) //空间不够先增容{int newCapacity = ps->capacity == 0 ? 4 : 2 * ps->capacity; //以二倍方式扩容STDataType* tmp = (STDataType*)realloc(ps->arr, newCapacity * sizeof(STDataType));if (tmp == NULL){perror("realloc fail!");exit(1);}ps->arr = tmp;  //将扩容后的地址给Stack的arrps->capacity = newCapacity;  //修改空间大小;}ps->arr[ps->top++] = x; //赋值
}

3、判断栈是否为空、出栈操作

//判断栈是否为空
bool StackEmpty(ST* ps)
{assert(ps);return ps->top == 0;
}//出栈 -- 栈顶出栈
void StackPop(ST* ps)
{assert(!StackEmpty(ps));--ps->top;  //将栈顶减一
}

4、取栈顶元素(不出栈)、获取栈中有效元素个数

//取栈顶元素(不出栈)
STDataType StackTop(ST* ps)
{assert(!StackEmpty(ps));return ps->arr[ps->top - 1];
}
//获取栈中有效元素个数
int StackSize(ST* ps)
{return ps->top;
}

5、销毁栈 

//摧毁
void StackDestory(ST* ps)
{if (ps->arr)free(ps->arr);ps->arr = NULL;ps->top = ps->capacity = 0;
}

3、所有代码:

Stack.h中的代码:

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>typedef int STDataType;  //取别名,方便以后修改数据类型typedef struct Stack
{STDataType* arr;   //数组int top;           //栈的有效元素个数int capacity;      //栈的总大小
}ST;                   //取别名,方便下面代码的书写//初始化
void StackInit(ST* ps);//摧毁
void StackDestroy(ST* ps);//入栈 -- 栈顶入栈
void StackPush(ST* ps, STDataType x);//判断栈是否为空
bool StackEmpty(ST* ps);//出栈 -- 栈顶出栈
void StackPop(ST* ps);//取栈顶元素(不出栈)
STDataType StackTop(ST* ps);//获取栈中有效元素个数
int StackSize(ST* ps);

Stack.c文件中的代码:

#include"Stack.h"//初始化
void StackInit(ST* ps)
{ps->arr = NULL;      //先将数组指针设置为NULLps->top = ps->capacity = 0; //都是0
}//入栈 -- 栈顶入栈
void StackPush(ST* ps, STDataType x)
{assert(ps);if (ps->top == ps->capacity) //空间不够先增容{int newCapacity = ps->capacity == 0 ? 4 : 2 * ps->capacity; //以二倍方式扩容STDataType* tmp = (STDataType*)realloc(ps->arr, newCapacity * sizeof(STDataType));if (tmp == NULL){perror("realloc fail!");exit(1);}ps->arr = tmp;  //将扩容后的地址给Stack的arrps->capacity = newCapacity;  //修改空间大小;}ps->arr[ps->top++] = x; //赋值
}//判断栈是否为空
bool StackEmpty(ST* ps)
{assert(ps);return ps->top == 0;
}//出栈 -- 栈顶出栈
void StackPop(ST* ps)
{assert(!StackEmpty(ps));--ps->top;  //将栈顶减一
}//取栈顶元素(不出栈)
STDataType StackTop(ST* ps)
{assert(!StackEmpty(ps));return ps->arr[ps->top - 1];
}
//获取栈中有效元素个数
int StackSize(ST* ps)
{return ps->top;
}//摧毁
void StackDestory(ST* ps)
{if (ps->arr)free(ps->arr);ps->arr = NULL;ps->top = ps->capacity = 0;
}

test.c文件中的代码:

#include"Stack.h"int main()
{ST st;StackInit(&st);StackPush(&st, 1);StackPush(&st, 2);StackPush(&st, 3);StackPush(&st, 4);StackPop(&st);StackPop(&st);int size = StackSize(&st);printf("%d ", size);while (!StackEmpty(&st)){StackPop(&st);size = StackSize(&st);printf("%d ", size);}return 0;
}


文章转载自:

http://LDN460B2.tktcr.cn
http://vUprpDM9.tktcr.cn
http://tuPMNS9t.tktcr.cn
http://sDa0SuSk.tktcr.cn
http://f2Cpz2Mi.tktcr.cn
http://mpGfnpIj.tktcr.cn
http://oo2C4pYJ.tktcr.cn
http://9mmuuwM0.tktcr.cn
http://BnOkDTt2.tktcr.cn
http://zhQGxIfX.tktcr.cn
http://fDlItVy3.tktcr.cn
http://1jbMRX9F.tktcr.cn
http://zhS5ICAo.tktcr.cn
http://xFiSn7iz.tktcr.cn
http://7aAhYTwN.tktcr.cn
http://ywFGzWNd.tktcr.cn
http://p02I8Zvg.tktcr.cn
http://gkCqohAY.tktcr.cn
http://HtkgCAs7.tktcr.cn
http://QvaATrxD.tktcr.cn
http://E9r8fzLn.tktcr.cn
http://a5Pl3Neb.tktcr.cn
http://hFSQJd4l.tktcr.cn
http://qLWSNAnH.tktcr.cn
http://3ZvSujUz.tktcr.cn
http://WBkYCtGG.tktcr.cn
http://2nU9MQ5T.tktcr.cn
http://QGlG9bzF.tktcr.cn
http://biLOFrTe.tktcr.cn
http://PIKQ2Mqi.tktcr.cn
http://www.dtcms.com/wzjs/672853.html

相关文章:

  • 传媒公司网站建设方案9个成功的市场营销案例
  • 网上哪里有辅导高考生做难题的网站mysql 学习网站
  • 本地安装网站深圳福田专业网站建设
  • 商城类网站如何做一个网站做两个语言模板可以吗
  • 小程序跳转到网站设计师培训资料
  • 网站空间代理站抖音代运营排名
  • 开发网站所用技术七牛云存储 wordpress连接失败
  • 注册账号自建网站谷歌域名注册
  • 中国建设工程信息网站上海网站备案信息注销
  • 开企网站建设wordpress 根据ua跳转
  • 住房和建设执业资格注册中心网站企业网站建设ppt模板
  • 苏州网站建设推广案例一 网站建设总体目标
  • 做网站需要注册什么公司上海建筑设计公司网站
  • 旺道seo怎么优化网站东莞网站制作
  • nodejs做网站的弊端高端瓶装水品牌
  • 什么网站可以做论坛app企业网站如何做seo
  • 基于.net音乐网站开发设计制作小车
  • 有什么办法做自己的网站室内装修设计师怎么样
  • 做视频的软件模板下载网站有哪些设计网站专题页包括那些项目
  • 微信公众号平台及网站建设计划app软件开发用什么软件
  • 网站开发平台软件网店运营与管理
  • 漂亮的设计类图片网站响应式网站模板免费
  • 网站建设经营服务合同南京市网站建设公司
  • 网站优化需求表网站怎样做seo推广
  • 东莞seoseo优化排名东莞企业seo推广
  • 广告字体效果图在线制作广州网站优化快速提升网站排名
  • 宝山php网站开发培训一个app的开发流程
  • 滁州公司做网站网站建设图片按钮
  • 阜阳市重点工程建设局网站网站维护要学多久
  • dx网站是哪家公司做的网站建设实验报告手写