class SequenceStack: """顺序栈 """ top = None def __init__(self): """初始化顺序栈 """ self.MaxStackSize = int(input("输入栈的大小:")) self.s = [None for x in range(0, self.MaxStackSize)] self.top = -1 def IsEmptyStack(self): """判断栈是否为空 """ if self.top == -1: return True else: return False def PushStack(self, element): """入栈 """ if self.top < self.MaxStackSize - 1: self.top = self.top + 1 self.s[self.top] = element else: print("栈满!") self.StackTraverse() 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: print("当前栈底至栈顶数据分别为:") for i in range(0, self.top + 1): print(self.s[i], end=' ') print("") 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 def CreateStackByInput(self): """创建顺序栈 """ data = input("请输入数据,按#结束:") while data != '#': self.PushStack(data) data = input("请输入数据,按#结束:") self.StackTraverse() ss = SequenceStack() ss.CreateStackByInput() element = input("输入入栈数据:") ss.PushStack(element=element) print("当前栈长度为:", ss.GetStackLength()) print("当前栈顶数据为:", ss.GetTopStack()) print("出栈数据为:", ss.PopStack()) class SequenceStack: """顺序栈 """ t
时间: 2023-06-06 11:06:35 浏览: 46
照顺序入栈,输入exit结束:") while data != 'exit': self.PushStack(data) data = input("请输入数据,按照顺序入栈,输入exit结束:")
该类为一个顺序栈,通过输入栈的大小和数据,创建一个新的顺序栈。通过IsEmptyStack可以判断该栈是否为空,通过PushStack可以往栈中添加元素,当栈满时会提示栈满。通过PopStack可以弹出栈顶元素,当栈为空时会提示栈空。通过StackTraverse可以遍历栈中所有元素,当栈为空时也会提示栈空。通过GetTopStack可以获取栈顶元素,当栈为空时会提示栈空。通过GetStackLength可以获取当前栈的长度。该类还提供了一个方法CreateStackByInput,用于通过输入数据创建一个新的顺序栈。
相关问题
注释class SequenceStack: """顺序栈 """ top = None def __init__(self): """初始化顺序栈 """ self.MaxStackSize = int(input("输入栈的大小:")) self.s = [None for x in range(0, self.MaxStackSize)] self.top = -1 def IsEmptyStack(self): """判断栈是否为空 """ if self.top == -1: return True else: return False def PushStack(self, element): """入栈 """ if self.top < self.MaxStackSize - 1: self.top = self.top + 1 self.s[self.top] = element else: print("栈满!") self.StackTraverse() 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: print("当前栈底至栈顶数据分别为:") for i in range(0, self.top + 1): print(self.s[i], end=' ') print("") 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 def CreateStackByInput(self): """创建顺序栈 """ data = input("请输入数据,按#结束:") while data != '#': self.PushStack(data) data = input("请输入数据,按#结束:") self.StackTraverse() ss = SequenceStack() ss.CreateStackByInput() element = input("输入入栈数据:") ss.PushStack(element=element) print("当前栈长度为:", ss.GetStackLength()) print("当前栈顶数据为:", ss.GetTopStack()) print("出栈数据为:", ss.PopStack()) class SequenceStack: """顺序栈 """ t
照顺序栈入栈顺序输入,以空格分隔:") dataList = data.split(" ") for i in range(0, len(dataList)): self.PushStack(dataList[i])
这是一个顺序栈的定义,包括初始化、判断栈空、入栈、出栈、遍历栈、获取栈顶元素、获取栈长度和创建栈等方法。其中,初始化方法会让用户输入栈的大小,入栈方法检查栈是否已满,若已满就输出提示信息。创建栈方法让用户输入一串数据,按顺序入栈。
编程基于栈的操作实现将任意一个非负十进制数,打印输出 与其等值的八进制数C语言
#include <stdio.h>
#include <stdlib.h>
#define MaxStackSize 100
typedef struct {
int data[MaxStackSize];
int top;
} Stack;
Stack* InitStack(){
Stack* s = (Stack*)malloc(sizeof(Stack));
s->top = -1;
return s;
}
int IsEmpty(Stack* s){
return s->top == -1;
}
int IsFull(Stack* s){
return s->top == MaxStackSize - 1;
}
void Push(Stack* s, int x){
if(IsFull(s)){
printf("Stack overflow\n");
return;
}
s->data[++s->top] = x;
}
int Pop(Stack* s){
if(IsEmpty(s)){
printf("Stack underflow\n");
return -1;
}
int x = s->data[s->top--];
return x;
}
void DestroyStack(Stack* s){
free(s);
}
void DecimalToOctal(int n){
Stack* s = InitStack();
while(n > 0){
Push(s, n % 8);
n /= 8;
}
printf("Octal: ");
while(!IsEmpty(s)){
printf("%d", Pop(s));
}
DestroyStack(s);
}
int main(){
int n;
printf("Enter a non-negative decimal integer: ");
scanf("%d", &n);
if(n < 0){
printf("Error: The input number must be non-negative.\n");
return 0;
}
DecimalToOctal(n);
return 0;
}