博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈——数组实现
阅读量:6191 次
发布时间:2019-06-21

本文共 1214 字,大约阅读时间需要 4 分钟。

引言:

     

       使用链表实现栈存在“对malloc和free的调用开销昂贵”的缺点,特别是与指针操作的例程相比尤其如此。利用数组实现栈能够避免了指针。但它的缺点是可能存在空间的浪费。

分析描写叙述:

       数组栈的结点元素。

#ifndef ERROR#define ERROR (0)#endif#ifndef OK#define OK	(!ERROR)#endif#define STACK_INIT_SIZE 100#define STACKINCREMENT  10typedef	int SElemType;typedef struct SqStack{	SElemType	*base;		SElemType	*top;		int			stacksize;}SqStack, *pStack;pStack S;
         
 栈的初始化。

pStack InitStack(pStack S){	S = (pStack)malloc(STACK_INIT_SIZE * sizeof(SElemType));	if(S == NULL){		return ERROR;	}	S->base = (SElemType *)S;	S->top = S->base;	S->stacksize = STACK_INIT_SIZE;	return S;}
       
入栈操作。

pStack Push(pStack S, SElemType e){	if((S->top - S->base) >= S->stacksize){		S->base = (SElemType *)realloc(S, (S->stacksize + STACKINCREMENT)*sizeof(SElemType));		if(S->base == NULL)					return ERROR;		S->top = S->base + S->stacksize;		S->stacksize += STACKINCREMENT;	}	*S->top++ = e;	return S;}
         
出栈操作。

SElemType Pop(pStack S){	if(S->top == S->base)			return 0;	return *(--S->top);}
         
取栈顶元素。

SElemType GetTop(pStack S){	if(S->top == S->base)			return ERROR;	return *(S->top - 1);}
         
求栈的长度。

int GetLength(pStack S){	int length = 0;	if(S->top == S->base)			return 0;        pStack Tmp = S;	while(Tmp->top-- != Tmp->base)			length++;	return length;}

转载地址:http://wqeda.baihongyu.com/

你可能感兴趣的文章
smarty模板的配置
查看>>
Object-c 单例模式中的 allocWithZone作用
查看>>
[置顶] Win8.1慎用360优化,可能导致安装驱动出现数据无效的问题。附解决方法...
查看>>
分数的加减法——C语言初学者代码中的常见错误与瑕疵(11)
查看>>
wget进行整站下载
查看>>
C#的前世今生,学会C#还能找到高薪工作吗?
查看>>
ActionBar 笔记
查看>>
递归和迭代的差别
查看>>
收集互联网博客
查看>>
Leetcode:148_Sort List | O(nlogn)链表排序 | Medium
查看>>
atitit...触发器机制 ltrigger mechanism sumup .的总结O8f
查看>>
两个容易被忽略的mysql知识
查看>>
fdisk磁盘分区
查看>>
恢复SQL Server被误删除的数据(再扩展)
查看>>
Linux 多学习过程
查看>>
★Kali信息收集~3.子域名系列
查看>>
深入浅出Java并发包—原子类操作
查看>>
【Python】Django RestFramework资料
查看>>
W5500问题集锦(二)
查看>>
Solr和IK分词器的整合
查看>>