钓罢归来不系船|

MiYol

园龄:2年5个月粉丝:0关注:3

栈的基本操作

栈的顺序存储结构


缺点:要设置栈存储的最大值


顺序栈的实现


#include "iostream"
#define MaxSize 50
//栈的结构体
struct Stack{
int data[MaxSize];
int top;
}stack;
//初始化栈
void init(){
stack.top = -1;
}
//判断是否栈空
bool isEmpty(){
if (stack.top == -1){
printf("栈空\n");
return true;
}
return false;
};
//判断是否栈满
bool isFull(){
if (stack.top == MaxSize - 1){
printf("栈满\n");
return true;
}
return false;
};
//入栈
int push(int num){
if (!isFull()){
stack.top = stack.top + 1;
stack.data[stack.top] = num;
}
return -1; //当栈满的时候返回-1
}
//出栈
int pop(){
if (!isEmpty()){
stack.top = stack.top - 1;
return stack.data[stack.top + 1];
}
return -1; //当栈空的时候返回-1
}
int main(){
init();
//入栈
for (int i = 1; i <=5; i++){
push(i);
}
//出栈,调用一次出栈一次
pop();
printf("%d\n", pop());
}

共享栈

优点:更有效的利用存储空间,两个栈的空间相互调节


栈的链式存储结构

栈链


优点:不存在栈满上溢的情况


#include "iostream"
struct Stack{
Stack *next;
int data;
}stack;
//判断栈是否为空
bool isEmpty(Stack *top){
if (top == NULL){
printf("栈空\n");
return true;
} else{
return false;
}
}
//入栈
Stack *push(Stack *top, int num){
Stack *s = (Stack *) malloc(sizeof (Stack));
s -> data = num;
s -> next = top;
top = s;
return top;
}
//出栈
Stack *pop(Stack *top){
if (!isEmpty(top)){
printf("%d\n", top -> data);
top = top -> next;
return top;
}
}
int main(){
Stack *top = (Stack *) malloc (sizeof (Stack));
top = NULL;
//入栈
for (int i = 1; i <=2; i++){
top = push(top, i);
}
//出栈
top = pop(top);
top = pop(top);
top = pop(top);
}

本文作者:MiYol

本文链接:https://www.cnblogs.com/miyol/p/16734094.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   MiYol  阅读(22)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 红昭愿 音阙诗听
  2. 2 恋人心 兰音-Reine
  3. 3 Spica HUMMING LIFE
红昭愿 - 音阙诗听
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.