数据结构堆栈的定义与应用

一 堆栈的顺式存储实现

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

1. 定义及存储结构

堆栈的顺式存储结构可以由一个数组和一个记录栈顶元素位置的变量组成

#define MaxSize <存放元素的最大个数>
typedef int ElemType; 
typedef struct SNode *Stack
{	ElemType data[MaxSize];		//存放顺序表元素,还可以用指针来表示顺序表的基地址,这样的话可以允许扩展 
								//在本处代码中使用了基本数组data,不允许扩展 
   	int top=-1;					//表示栈顶的位置,其实就是顺序栈的长度
} ;			//顺序表的类型

对于可扩展的顺序栈的定义如下

typedef int Position;
struct SNode {
    ElementType *Data; /* 存储元素的数组 */
    Position Top;      /* 栈顶指针 */
    int MaxSize;       /* 堆栈最大容量 */
};
typedef struct SNode *Stack;//注意此处使用的是指针表示顺序表的基地址

2.相关操作

(1) 堆栈的初始化(此处用的是不可扩展的顺序栈)

void CreateList(Stack *&L,ElemType a[],int n)
//建立顺序表
{
	L=(Stack *)malloc(sizeof(Stack));
	for (int i=0;i<n;i++)
		L->data[i]=a[i];
	L->top=n-1;
}

(2)判断堆栈是否为空

bool IsEmpty(Stack S)
{
	return(S->top==-1);
}

判断堆栈是否满

bool IsFull( Stack S )
{
    return (S->Top == S->MaxSize-1);
}

(3)push操作

void Push(Stack PtrS,ElementType item)
{
    if(PtrS->Top == MaxSize-1) {
        printf("栈满了");
        return;
    } else {
        (PtrS->Top)++;
        PtrS->Data[PtrS->Top] = item;
        return;
    }
}

(4)pop操作

ElementType Pop( Stack S )
{
    if ( IsEmpty(S) ) {
        printf("堆栈空");
        return ERROR; /* ERROR是ElementType的特殊值,标志错误 */
    }
    else 
        return ( S->Data[(S->Top)--] );
}

二 堆栈的应用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值