堆栈的顺序存储

在这里和初学者分享下,不要觉得顺序存储比链式存储low,很多时候数值大小固定的时候,用顺序存储去解决更快,在刷题也是

#include<stdio.h>
#include<stdlib.h>
#define false -1
#define ture 1
struct SNode 
{
	int*Data;
	int Top;
	int Maxsize;
};
typedef struct SNode *Stack;
typedef Stack SS;
Stack CreateStack(int MaxSize);//生成空堆栈,其最大长度为Maxsizeb
int IsFull(Stack S);//判断堆栈S是否已满
int Push(Stack S,int X);//将元素item压入堆栈
int IsEmpty(Stack S);//判断堆栈S是否为空
int Pop(Stack S);//删除并返回栈顶元素


Stack CreateStack(int Maxsize) 
{
	Stack S = (Stack)malloc(sizeof(struct SNode));
	S->Data = (int*)malloc(Maxsize * sizeof(int));
	S->Top = -1;
	S->Maxsize = Maxsize;
	return S;
}

int IsFull(Stack S) {
	
	return(S->Top == S->Maxsize-1);

}

/*入栈*/
int Push(Stack S, int X) 
{
	if (IsFull(S))
	{
		printf("栈满\n");
		return false;
	}
	else
	{
		S->Data[++(S->Top)]=X;
		return ture;
	}

}

int IsEmpty(Stack S) {
	
	return(S->Top == -1);
}

/*出栈*/
int Pop(Stack S) 
{
	if (IsEmpty(S)) {
		printf("栈空\n");
		return false;
	}
	else {
		S->Data[--(S->Top)];
	}
}
/*出栈打印*/
int Printstack(Stack S) 
{
	while (S->Top!=-1)
	{
		int m= S->Data[S->Top];
		S->Top--;
		printf("%d\n", m);
	}
	printf("输出完毕");

}



int main() 
{
	int m;
	Stack S2 = CreateStack(5);
	 Push(S2, 10);
	 Push(S2, 9);
	 Push(S2, 8);	
	 Push(S2, 7);
	 Printstack(S2);
	 return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值