美文网首页
栈的实现

栈的实现

作者: Drs莫思归 | 来源:发表于2017-12-21 15:05 被阅读0次

include <stdio.h>

include <stdlib.h>

define STACK_INIT_SIZE 100

define INCRE 10

define ERROR -1

define OK 1

typedef struct{
int *base;
int *top;
int stacksize;
}SqStack;
int InitStack(SqStack *S){
S->base = (int *)malloc(STACK_INIT_SIZE * sizeof(int));
if(!S->base) return ERROR;
S->top = S->base;
S->stacksize = STACK_INIT_SIZE;
return OK;
}
int Print(SqStack S){
int *i = S.top;
if(S.base == S.top)
return ERROR;
while(i > S.base){
i--;
printf("%d ", *i);
}
putchar('\n');
return OK;
}
void CreadStack(SqStack S, int n){
printf("请输入%d个元素:", n);
int i = 0;
while(i < n){
scanf("%d", S->top);
S->top++;
i++;
}
Print(
S);
}
int GetTop(SqStack *S, int num){
if(S->base == S->top)
return ERROR;
num = *(S->top-1);
printf("top: %d\n", num);
return OK;
}
int Push(SqStack *S, int num){
if(S->top - S->base >= S->stacksize){
S->base = (int )realloc(S->base, (S->stacksize+INCRE)sizeof(int));
if(!S->base){
return ERROR;
}
S->top = S->base + S->stacksize;
S->stacksize += INCRE;
}
(S->top++) = num;
Print(
S);
return OK;
}
int Pop(SqStack *S, int num){
if(S->top == S->base){
return ERROR;
}
num = --S->top;
printf("Pop:%d\n", num);
Print(
S);
return OK;
}
int Show(){
int n;
printf("*****************\n");
printf("1、获取栈顶元素。\n");
printf("2、插入元素。\n");
printf("3、删除栈顶元素。\n");
printf("4、退出。\n");
printf("-----------------\n");
printf("请选择要操作的序号:");
scanf("%d", &n);
return n;
}
int main()
{
SqStack S;
int num = 0;
InitStack(&S);
CreadStack(&S, 5);
int sele = Show();
while(sele != 4){
switch(sele){
case 1:
GetTop(&S, num);
sele = Show();
break;
case 2:
printf("请输入要进栈的数字:");
scanf("%d", &num);
Push(&S, num);
sele = Show();
break;
case 3:
Pop(&S, num);
sele = Show();
break;
case 4:
break;
}
}
return 0;
}

相关文章

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

  • Swift 队列&栈 相关操作

    栈 LIFO(后进先出) 队列 FIFO(先进先出) 队列与栈相互的实现 栈 - 队列实现 队列 - 栈实现 相关...

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • 2018-07-09顺序表实现栈

    栈的实现 ——直接用顺序表(列表list)进行 栈结构实现 栈可以用顺序表实现,也可以用链表实现。 栈的操作 St...

  • 38_两个有趣的问题

    关键词:通过栈实现队列、通过队列实现栈 0. 通过栈实现队列 用栈实现队列等价于用后进先出的特性实现先进先出的特性...

  • 栈 Python实现

    栈的顺序表实现 栈的链接表实现

  • 算法-栈和队列算法总结

    栈和队列算法总结 1 模拟 1.1 使用栈实现队列 1.2 使用队列实现栈 2 栈的应用 2.1 栈操作 2.2 ...

  • 队列之-队列实现栈

    一、队列实现栈核心算法概述 之前已经描述过了用栈实现队列的功能,见栈系列之-实现队列,那么同样队列也可以用来实现栈...

  • 3. 栈的操作

    1. 栈的操作-c语言实现2. 栈操作的实现-顺序栈和链栈 3. 栈的实现与遍历4. c语言的函数调用栈5. 两个...

  • leecode刷题(26)-- 用栈实现队列

    leecode刷题(26)-- 用栈实现队列 用栈实现队列 使用栈实现队列的下列操作: push(x) -- 将一...

网友评论

      本文标题:栈的实现

      本文链接:https://www.haomeiwen.com/subject/vodawxtx.html