提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、顺序栈是什么?
示例:栈是限定仅在表尾进行插入和删除操作的线性表,而顺序栈就是线性表顺序村粗结构的简化,只是限定了只能在表尾操作而已。
二、C代码实现
#include <stdio.h>
#define ERROR 0
#define OK 1
#define MAXSIZE 20
typedef int status;
typedef int sElemType;
typedef struct {
sElemType data[MAXSIZE];
int top;
}sqStack;
//进栈
status Push(sqStack *s, sElemType e){
if (s->top == MAXSIZE-1){
return ERROR;//栈已满
}
s->data[++s->top]=e;
return OK;
}
status Pop(sqStack *s, sElemType *e){
if (s->top == -1){
return ERROR;//栈为空
}
*e = s->data[s->top--];
return OK;
}
sElemType GetTop(sqStack *s, sElemType *e){
if (s->top == -1){
return ERROR;
}
*e = s->data[s->top];
return OK;
}
int StackLength(sqStack *s){
if (s->top == -1){
return ERROR;
}
int i = 0;
int j = 0;//定义一个j用于保存栈的top指针的值
j = s->top;
while (j != -1){
j--;
i++;
}
return i;
}
//验证
int main(int argc, char const *argv[]){
sqStack s = {{1,2,3}, 2};
printf("顺序栈的长度为%d\n", StackLength(&s));
printf("获取栈顶的元素:");
int e;//获取栈顶的元素
GetTop(&s, &e);
printf("%d\n", e);
printf("获取栈顶元素结束\n");
// GetTop(&s, &e);
// printf("获取栈顶元素结束%d \n",e);
Push(&s, 10);
Push(&s, 100);
Push(&s, 1000);
printf("顺序栈的长度为%d\n", StackLength(&s));
printf("获取栈的所有元素:");
int sl = StackLength(&s);
int i = 0;//计数器
for (i;i<sl;i++){
Pop(&s, &e);
printf("%d ",e);
}
printf("\n");
printf("获取栈的所有元素结束\n");
return 0;
}
运行结果
三、python 代码实现
# -*-coding:utf-8-*-
class sqStack:
def __init__(self, MAXSIZE):
self.MAXSIZE = MAXSIZE
self.data = [None] * self.MAXSIZE
self.top = -1
def isempty(self):
return self.top == -1
def Push(self, item):
if self.top == self.MAXSIZE - 1:
return "sqStack is full."
self.data[self.top+1] = item
self.top += 1
def Pop(self):
if self.isempty():
return "sqStack is empty"
rs = self.data[self.top]
self.top -= 1
return rs
def sqStackLength(self):
return self.top + 1
def display(self):
# index = self.top
# while index != -1:
# print(self.data[index], end=" ")
# index -= 1
# print()
for i in range(self.top+1):
print(self.data[i], end=" ")
print()
if __name__ == '__main__':
s = sqStack(20)
print(s.isempty())
s.display()
s.Push(1)
s.Push(10)
s.Push(100)
s.display()
print(s.Pop())
s.display()
运行结果
四、总结
提示:栈其实就是线性表的特例。