【数据结构】——入栈出栈

本文介绍了数据结构中的栈操作,重点讨论了入栈和出栈遵循的"先进后出"原则。作者分享了自己的学习心得,并在代码中添加了详细注释,希望能帮助读者理解。同时,作者欢迎读者提出宝贵意见,共同探讨和修正可能存在的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[数据结构之入栈出栈]

Hello我是被计算机编程语言支配的可怜兮兮的γ。
o(╥﹏╥)o
数据结构是这学期上,之前的程序我都没有想过要总结,至于这个为什么要po出来,估计也就是因为我写了这么多注释吧(突然感jio自己好伟大,我反正是能看懂的哈哈你们应该也可以)
但是注解里还是有一些可能存在错误,所以我更希望各位大佬能在线指导指导。ball ball你们了……

这篇数据的主要原理,就是入栈出栈顺序是 “先进后出”

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100                   //定义一个最大的数组长度 
#define OVERFLOW -1                   //意思是如果返回overflow,即为无效 
#define OK 1                          //返回ok意为正确 
#define ERROR 0                       //error表示错误 
typedef char SElemType;               //申明SElemType是char类型 
typedef int Status;                   //申明Status是int类型 

//定义一个结构体 
typedef struct
{
	SElemType *base;                  //栈底指针 
	SElemType *top;                   //栈顶指针 
	int stacksize;                    //定义栈的长度 
}SqStack;

//初始化一个栈 
Status InitStack(SqStack &S)          //SqStack */&S都是指传入一个址 
{
	S.base=new SElemType[MAXSIZE];    //初始化一个新栈 
	if(!S.base)                  
遍历结构通常涉及使用while循环,因为是一种后进先出(LIFO)的数据结构,最后一个的元素会最先出栈。当你想要逐个弹出栈顶元素并处理它们时,可以按照以下步骤操作: 1. 初始化一个标志(如`hasMoreElements`),用于检查是否还有更多的元素在里。 2. 当`hasMoreElements`为`true`时,进while循环: - 使用出栈操作(如`pop()`或`peek()`)获取顶元素。 - 处理该元素(例如打印、存储或执行相应操作)。 - 更新`hasMoreElements`,判断是否为空。如果是,将其设为`false`。 3. 循环结束后,已全部遍历完毕。 对于队列,由于其先进先出(FIFO)的特点,遍历时需要特别注意。如果你想要清空队列并将所有元素处理掉,应该每次从队列头部取出一个元素,直到队列为空。但是,队列本身并没有提供直接的`while`遍历机制。你可以选择创建一个新的循环,或者将队列元素转移到另一个数据结构(如数组),然后用`while`遍历这个新结构。 ```python # 假设有 queue 变量表示队列 queue = ... # 填充队列 # 创建一个临时列表来存放队列元素 elements = [] # 将队列元素转移到列表 while not queue.empty(): elements.append(queue.pop()) # 现在可以使用 while 循环遍历 elements 列表 hasMoreElements = True while hasMoreElements: element = elements.pop(0) # 注意队列是左移,所以用 pop(0) # 处理 element hasMoreElements = len(elements) > 0 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值