Python数据结构实验报告:实现顺序栈的基本操作

目录

实验目的

实验内容

实验代码

运行结果


实验目的

考察能否正确理解栈的顺序存储结构,以及对顺序栈基本操作的掌握程度。

实验内容

创建程序,在其中编写一个顺序栈的类,该类必须包含顺序栈的定义及基本操作,并通过以下步骤测试基本操作的实现是否正确。

(1)初始化一个顺序栈 SequenceStack。

(2)判断栈是否为空。

(3)将元素 1,3,5 依次进栈。

(4)遍历栈内所有元素。

(5)获取栈顶元素。

(6)获取栈的长度。

(7)将栈中元素依次出栈并输出。

(8)判断栈是否为空。

实验代码

###########################################################
#类名称:SequenceStack
#类说明:定义一个栈
#类释义:提供顺序栈的相关操作
###########################################################
class SequenceStack:
    ############################
    #默认的初始化栈的函数
    ############################
    def __init__(self):
        self.MaxStackSize=10
        self.s=[None for x in range(0,self.MaxStackSize)]
        self.top=-1
    #############################
    #访问某一元素的函数
    #############################        
    def StackVisit(self,element):
        print(element,end=' ')
    ############################
    #判断栈是否为空的函数
    ############################    
    def IsEmptyStack(self):
        if self.top==-1:
              iTop=True
        else:
              iTop=False
        return   iTop
    ############################
    #元素进栈的函数
    ############################    
    def PushStack(self,x):
        if self.top<self.MaxStackSize-1:
            self.top=self.top+1
            self.s[self.top]=x
        else:
            print("栈满")
            return
    ############################
    #元素出栈的函数
    ############################        
    def PopStack(self):
        if self.IsEmptyStack():
            print("栈为空")
            return
        else:
            iTop=self.top
            self.top=self.top-1
            return self.s[iTop]
    #############################
    #依次访问栈中元素的函数
    #############################        
    def StackTraverse(self):
        if self.IsEmptyStack():
            print("栈为空")
            return
        else:
            for i in range(0,self.top+1):
                self.StackVisit(self.s[i])
    ############################
    #获取当前栈顶元素的函数
    ############################                
    def GetTopStack(self):
        if self.IsEmptyStack():
            print("栈为空")
            return
        else:
            return self.s[self.top]
    ############################
    #输出当前栈长度的函数
    ############################   
    def GetStackLength(self):
        if self.IsEmptyStack():
            print("栈为空")
            return
        else:
            return self.top+1
#############################################################
#类名称:TestSequenceStack
#类说明:定义一个测试顺序栈的类
#类释义:提供测试的方法
############################################################
class TestSequenceStack:    
    ############################
    #测试顺序串相关操作的函数
    ############################
    def PrintOut(self,st):
        print("(1)经判断当前栈",end='')
        if st.IsEmptyStack()==True:
            print("为空")
        else:
            print("不为空")
        st.PushStack('1')
        st.PushStack('3')
        st.PushStack('5')
        print("(2)元素",end='')
        st.StackTraverse()
        print("依次进栈",end='')
        print("\n(3)当前栈顶元素为",end='')
        print(st.GetTopStack())
        print("(4)当前栈中共有",end='')
        print(st.GetStackLength(),end='')
        print("个元素,分别为",end='')
        st.StackTraverse()
        print("\n(5)元素",st.GetTopStack(),"出栈,当前栈中元素为",end='')
        st.PopStack()
        st.StackTraverse()
        print("\n(6)元素",st.GetTopStack(),"出栈,当前栈中元素为",end='')
        st.PopStack()
        st.StackTraverse()
        print("\n(7)元素",st.GetTopStack(),"出栈,当前",end='')
        st.PopStack()
        if st.IsEmptyStack()==True:
          print("栈为空")
        else:
          print("栈不为空")
if __name__ =='__main__':
    SS=SequenceStack()
    TSS=TestSequenceStack()
    TSS.PrintOut(SS)

运行结果

(1)经判断当前栈为空
(2)元素1 3 5 依次进栈
(3)当前栈顶元素为5
(4)当前栈中共有3个元素,分别为1 3 5 
(5)元素 5 出栈,当前栈中元素为1 3 
(6)元素 3 出栈,当前栈中元素为1 
(7)元素 1 出栈,当前栈为空

猜你喜欢

转载自blog.csdn.net/agelee/article/details/131140343
今日推荐