发表日期: 2021-04-13 14:32:23 浏览次数:111
定州企业微信公众号小程序开发公司、定州企业网页设计方案、定州做网站开发价格、定州微信公众号制作运营报价明细表、定州网站设计公司费用、定州网站推广大概需要多少钱
定州市,河北省辖县级市,由保定市代管, [1] 是河北省省直管县(市)体制改革试点县(省直管县行政区划隶属关系不变 [2] ), [3-4] 是全省重点培育的新兴区域中心城市。连续4年获评全国中小城市投资潜力百强、新型城镇化质量百强,晋级全国科技创新百强,入围全国县域经济强县。面积1283平方公里,截至2019年,定州市常住总人口123.09万人,辖25个乡镇(办),542个村(社区)。 [5-6]
定州市位于京津冀经济区,是京津冀经济区重要节点城市 [7] ,国家新型城镇化综合试点地区 [8] ,河北省十二五规划重点培育的现代化中等城市 [9] ,河北省十大历史文化名城之一。
2019年,定州市户籍总户数37.3万户,户籍总人口124.1万人,比上年增加0.3万人。常住总人口123.09万人,比上年末增加0.4万人。 [6] 2019年,定州市生产总值实现3330429万元,比上年增长7.1%。按常住人口计算,定州市人均地区生产总值为27101元。 [6] 2020年9月,入选河北省食品产业强县(市、区)(培育型)名单。 [10] 2020年12月,入选河北省数字乡村试点地区名单。
我们在自己的栈的实现中将要使用的这一操作的正式定义如下。设S 是ETYPE
类型的栈而且x 是ETYPE
类型的元素。
1. clear (S )。将栈S 清空。
2. isEmpty (S )。如果S 为空,返回TRUE
,否则返回FALSE
。
3. isFull (S )。如果S 已满,返回TRUE
,否则返回FALSE
。
4. pop (S,x )。如果S 为空,返回FALSE
;否则,将x 置为栈S 栈顶元素的值,并将该元素从栈S 中删除,然后返回TRUE
。
5. push (x,S )。如果S 已满,返回FALSE
;否则,将元素x 添加到S 的栈顶,并返回TRUE
。
pop 的一个常见变种会假设S 非空。它只接受S 作为参数,并返回被弹出的元素x。而pop 的另一个版本则根本不返回值,它只是将栈顶处的元素删除。同样,我们可以在编写push 时假设S“未满”。在这种情况下,push 不返回任何值。
用于表的这种实现也能用于栈。我们将首先讨论基于数组的实现,接着讨论链表表示。在两种情况下,我们都将元素类型定为int
。更一般化的工作还是留作本节习题。
图 6-16 表示栈的数组
基于数组的整数栈的声明如下。
typedef struct { int A[MAX]; int top;} STACK;复制代码
在基于数组的实现中,栈既可以向上增长(从较低区域向较高区域),也可以向下增长(从较高区域向较低区域)。在这里我们选择让栈向上增长5,也就是说,栈中最老的元素a0在位置0,第二老的元素a1在位置1,而最新插入的元素an-1在位置n-1。
5因此“栈顶”在图中是出现在底部的,这是种不凑巧但相当标准的约定。
数组结构体中的top
字段指示了栈顶的位置。因此,在图6-16中,top
的值为n-1。空栈是通过top=-1
来表示的。在这种情况下,数组A
的内容是无关紧要的,栈中没有任何元素。
6.6.1节中定义的5种栈操作对应的程序如图6-17所示。我们通过引用传递栈,来避免复制作为函数参数的大数组。
void clear(STACK *pS){ pS->top = -1;}BOOLEAN isEmpty(STACK *pS){ return (pS->top < 0);}BOOLEAN isFull(STACK *pS){ return (pS->top >= MAX-1);}BOOLEAN pop(STACK *pS, int *px){ if (isEmpty(pS)) return FALSE; else { (*px) = pS->A[(pS->top)--]; return TRUE; }}BOOLEAN push(int x, STACK *pS){ if (isFull(pS)) return FALSE; else { pS->A[++(pS->top)] = x; return TRUE; }}复制代码
图 6-17 用来实现数组上的栈操作的函数
与表一样,可以用链表数据结构表示栈。不过,如果栈顶是表的前端就会很方便。这样的话,可以在表的表头压入和弹出,都只用花O(1)的时间。如果必须找到表的端点再压入和弹出,对长度为n 的栈执行这些操作就要花O(n)的时间。而这样一来,栈S=(a1,a2,…,an)必须用链表“倒着”表示为:
在定义表单元时使用过的类型定义宏也可以用于栈。宏
DefCell(int, CELL, STACK);复制代码
定义了整数栈,并扩展为
typdef struct CELL *STACK;struct CELL { int element; STACK next;};复制代码
对这种表示而言,5种操作可以用图6-18中的函数实现。我们假设malloc
从不会用尽空间,这意味着isFull 操作总是会返回FALSE
,而且push 操作从不会失败。
void clear(STACK *pS){ (*pS) = NULL;}BOOLEAN isEmpty(STACK *pS){ return ((*pS) == NULL);}BOOLEAN isFull(STACK *pS){ return FALSE;}BOOLEAN pop(STACK *pS, int *px){ if ((*pS) == NULL) return FALSE; else { (*px) = (*pS)->element; (*pS) = (*pS)->next; return TRUE; }}BOOLEAN push(int x, STACK *pS){ STACK newCell; newCell = (STACK) malloc(sizeof(struct CELL)); newCell->element = x; newCell->next = (*pS); (*pS) = newCell; return TRUE;}复制代码
图 6-18 链表实现的栈所使用的函数
定州企业微信公众号小程序开发公司、定州企业网页设计方案、定州做网站开发价格、定州微信公众号制作运营报价明细表、定州网站设计公司费用、定州网站推广大概需要多少钱
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: https://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878