算法级数15天快速第十天堆栈

算法级数15天快速第十天堆栈
第一:概念

栈,也是一种特殊的线性表,是一种后进先出(LIFO),和在现实中有很多这样的例子。

例如:食堂里的一摞盘子,我们只能从上面拿一个。
二:存储结构

堆栈不像队列,需要两个指针来维护,而堆栈只需要一个指针,这是因为堆栈是一端受限的线性表。

相同的顺序结构用于存储堆栈,顶部指针指向堆栈的顶部,所有操作只能在顶部。
代码段:

复制代码代码如下所示:
该#区堆栈的数据结构
X
堆栈数据结构
X
seqstack公共类
{
公共数据;

X
更改堆栈指针
X
公共int顶部= 1;

公共seqstack(int的长度)
{
数据=新长度T { };
}
}
#铁心端部定点
三:共同操作

堆栈的操作如下:(1)初始化堆栈、堆栈、堆栈和堆栈顶部。

1:初始化堆栈

这还是比较简单的。当堆栈被初始化时,默认的top指针被设置为- 1,这在图中没有显示

代码段:

复制代码代码如下所示:
该#区堆栈的初始化
X
只是堆栈的初始化
X
X
X
市民SeqStack SeqStackInit(int length)
{
seqstack seqstack =新seqstack(长度);

seqstack.top = - 1;

返回seqstack;
}
#铁心端部定点
2:栈

这个操作主要做两件事:(1)元素从栈顶被压,顶端指针增加。

代码段:

复制代码代码如下所示:
#区堆栈
X
只是栈
X
X
X
X
公共无效SeqStackPush(seqstack seqstack,T数据)
{
如果(SeqStackIsFull(seqstack))
抛出新的异常(对不起,堆栈溢出);

seqstack。数据{ + seqstack顶} =数据;
}
#铁心端部定点
3:出栈

与堆栈类似,您需要做两件事,(1)去掉top中的元素,并减少top指针。
代码段

复制代码代码如下所示:
#区堆栈
X
刚从烟囱里出来
X
X
X
X
公共seqstackpop(seqstack seqstack)
{
如果(SeqStackIsEmpty(seqstack))
抛出新的异常(哭泣,堆栈已空);

seqstack。数据{ seqstack。顶} =默认(T);

Return seqStack.data{--seqStack.top};
}
#铁心端部定点
4:获取堆栈的顶部元素

这很简单。与堆栈唯一的区别是它不会破坏堆栈的顶部,只是把它打开来查看它。

代码段

复制代码代码如下所示:
#区到堆栈的顶部
X
只要得到栈顶
X
X
X
X
公共seqstackpeek(seqstack seqstack)
{
如果(SeqStackIsEmpty(seqstack))
抛出新的异常(堆栈是空的);

返回seqstack。数据{ seqstack顶};
}
#铁心端部定点
整个运行代码如下所示

复制代码代码如下所示:
使用系统
使用system.collections.generic;
使用LINQ系统;
使用系统文本

命名空间seqstack
{
类节目
{
static void main(String { } args)
{
seqstackclass stackmanager =新SeqStackClass();

seqstack seqstack = stackmanager.seqstackinit(10);

console.writeline(********************出版社ID = 1,编号为2,编号为3 *********************** );
按id = 1 id = 2,id = 3元素
StackManager.SeqStackPush(seqstack,新学生(){ ID = 1,名称=线场农场
StackManager.SeqStackPush(seqstack,新学生(){ ID = 2,名为huangxincheng520
StackManager.SeqStackPush(seqstack,新学生(){ ID = 3,名为51cto

console.writeline(…记者走进成功,当前堆栈的元素有:+ stackmanager.seqstacklen(seqstack)+一);

console.writeline(******************视图顶部元******************** );

VaR结果= stackmanager.seqstackpeek(seqstack);

console.writeline(堆栈的顶部是:id =+ result.id +

console.writeline(********************易拉罐元*********************** );

StackManager.SeqStackPop(seqstack);

console.writeline(******************查看堆栈元素******************** );

为(int i = 0;i < stackmanager.seqstacklen(seqstack);i++)
{
console.writeline(堆栈的顶部是:id =+ seqstack。数据{我} ID +。
}

控制台;
}
}

#地区学生数据实体
X
公共学生数据实体
X
学生公共课
{
公共int id;get;set;}

公共字符串名称{;get;set;}

公共年龄;get;set;}
}
#铁心端部定点

该#区堆栈的数据结构
X
堆栈数据结构
X
seqstack公共类
{
公共数据;

X
更改堆栈指针
X
公共int顶部= 1;

公共seqstack(int的长度)
{
数据=新长度T { };
}
}
#铁心端部定点

seqstackclass公共类
{
该#区堆栈的初始化
X
只是堆栈的初始化
X
X
X
市民SeqStack SeqStackInit(int length)
{
seqstack seqstack =新seqstack(长度);

seqstack.top = - 1;

返回seqstack;
}
#铁心端部定点

#区域判断栈是否为空
X
只是为了确定堆栈是否是空的。
X
X
X
X
市民bool SeqStackIsEmpty(seqstack seqstack)
{
返回seqstack.top = = 1;
}
#铁心端部定点

#区空栈
X
只是空栈
X
X
X
公共无效seqstackclear(seqstack seqstack)
{
seqstack.top = - 1;
}
#铁心端部定点

是否#区栈满
X
堆栈是否满了
X
X
X
市民bool SeqStackIsFull(seqstack seqstack)
{
返回seqstack.top = = seqstack.data.length;
}
#铁心端部定点

#区堆栈
X
只是栈
X
X
X
X
公共无效SeqStackPush(seqstack seqstack,T数据)
{
如果(SeqStackIsFull(seqstack))
抛出新的异常(对不起,堆栈溢出);

seqstack。数据{ + seqstack顶} =数据;
}
#铁心端部定点

#区堆栈
X
刚从烟囱里出来
X
X
X
X
公共seqstackpop(seqstack seqstack)
{
如果(SeqStackIsEmpty(seqstack))
抛出新的异常(哭泣,堆栈已空);

seqstack。数据{ seqstack。顶} =默认(T);

返回seqstack。数据-- seqstack {顶};
}
#铁心端部定点

#区到堆栈的顶部
X
只要得到栈顶
X
X
X
X
公共seqstackpeek(seqstack seqstack)
{
如果(SeqStackIsEmpty(seqstack))
抛出新的异常(堆栈是空的);

返回seqstack。数据{ seqstack顶};
}
#铁心端部定点

#区到栈中元素的数量
X
获取堆栈中的元素数量正在更改。
X
X
X
X
市民int SeqStackLen(seqstack seqstack)
{
返回seqstack.top + 1;
}
#铁心端部定点
}
}

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部