堆栈的基本操作集合

堆栈是类似于容器的一种数据结构,先进到容器的最后出容器。

一 顺序栈的存储结构

typedef  int Position;
typedef  struct SNode  *PtrToSNode;
struct SNode {
	ElementType *Data;
	Position Top;
	int Maxsize;
};
typedef  PtrToSNoSNode  Stack;

顺序栈 堆栈的创建

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

顺序栈的入栈操作

bool Push(Stack S,ElementType  X)
{
	if(S->Top+1==S->Maxsize) 
	{
		printf("堆栈满了\n");
		return false;
	}
	else {
		S->Data[++(S->Top)]=X;
		return true;
	}
}

顺序栈的出栈操作

ElementType Pop(Stack S)
{
	if(S->Top==-1) 
	{
		printf("堆栈是空的\n");
		return -1;  //返回一个堆栈中不可能的值,作为错误的信号;
	}
	else {
		return S->Data[(S->Top)--];
	}

二 堆栈的链式操作

存储结构

Stack  CreateStack  ()(带头结点)
{
	Stack  S;
	S=(Stack)malloc(sizeof(struct SNode));
	S->Next=NULL;
	return S;
}

入栈操作(只可以在头操作,不用考虑栈是否满)

bool Push(Stack S,ElementType  X)
{
	Stack  temp;
	temp=(Stack) malloc(sizeof(struct SNode));
	temp->Next=NULL;
	temp->Data=X;
	temp->Next=S->Next;
	S->Next=temp;
	return true;
}

出栈操作

ElementType Pop(Stack S)
{
	ElementType  num;
	Stack  temp;
	if(!S->Next) 
	{
		printf("堆栈是空的\n");
		return -1;
	}
	else {
		 temp= S->Next;
		 num=temp->Data;
		 S->Next=temp->Next;
		 free(temp);
	      return   num;  //注意返回的数字一定要先临时放到一个存储单元,因为他原来的存储单元被free;
	}
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java集合中的`Stack`类是基于后进先出(LIFO)原则的数据结构。它继承自`Vector`类,并提供了一些额外的方法用于实现堆栈操作。 要使用`Stack`类,首先需要导入`java.util.Stack`包。然后可以创建一个`Stack`对象并开始进行堆栈操作。 以下是一个简单的示例代码,展示了如何使用`Stack`类: ```java import java.util.Stack; public class StackExample { public static void main(String[] args) { // 创建一个空的堆栈 Stack<String> stack = new Stack<>(); // 压入元素到堆栈中 stack.push("Java"); stack.push("C++"); stack.push("Python"); // 查看堆栈顶部的元素 String topElement = stack.peek(); System.out.println("Top element: " + topElement); // 弹出堆栈顶部的元素 String poppedElement = stack.pop(); System.out.println("Popped element: " + poppedElement); // 判断堆栈是否为空 boolean isEmpty = stack.isEmpty(); System.out.println("Is stack empty? " + isEmpty); // 获取堆栈的大小 int size = stack.size(); System.out.println("Stack size: " + size); } } ``` 上述代码首先创建了一个空的`Stack`对象,然后通过`push()`方法将一些字符串压入堆栈中。使用`peek()`方法可以查看堆栈顶部的元素,而`pop()`方法可以弹出堆栈顶部的元素。`isEmpty()`方法用于判断堆栈是否为空,`size()`方法可以获取堆栈的大小。 运行上述代码,你会看到以下输出: ``` Top element: Python Popped element: Python Is stack empty? false Stack size: 2 ``` 这只是`Stack`类的基本用法示例,你还可以使用其他方法来处理堆栈中的元素。希望能对你有所帮助!如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一蓑烟雨荏平生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值