#include "pch.h"
#include <iostream>
typedef struct sTack
{
int * pData;
int nSize;
int nTop;
} *PSTACK;
void initStack(PSTACK pStack, int nSize);
bool stack_isEmpty(PSTACK pStack);
bool stack_isFull(PSTACK pStack);
void stack_push(PSTACK pStack, int nData);
void stack_pop(PSTACK pStack, int &nData);
void show_stack(PSTACK pStack);
void initStack(PSTACK pStack, int nSize)
{
pStack->pData = (int*)malloc(sizeof(int) * nSize);
pStack->nSize = nSize;
pStack->nTop = 0;
}
bool stack_isEmpty(PSTACK pStack)
{
if (pStack->nTop == 0)
{
return true;
}
return false;
}
bool stack_isFull(PSTACK pStack)
{
if (pStack->nTop == pStack->nSize)
{
return true;
}
return false;
}
void stack_push(PSTACK pStack, int nData)
{
if (stack_isFull(pStack))
{
std::cout << "栈空间满了!!" << std::endl;
return;
}
pStack->pData[pStack->nTop] = nData;
pStack->nTop++;
}
void stack_pop(PSTACK pStack, int & nData)
{
if (stack_isEmpty(pStack))
{
std::cout << "栈空间空了!!" << std::endl;
return;
}
nData = pStack->pData[pStack->nTop - 1];
pStack->nTop--;
}
void show_stack(PSTACK pStack)
{
if (stack_isEmpty(pStack))
{
return;
}
for (int i = pStack->nSize - 1; i >= 0; --i)
{
std::cout << pStack->pData[i] << "\t";
}
std::cout << std::endl;
}
int main()
{
sTack s;
initStack(&s, 6);
stack_push(&s, 1);
stack_push(&s, 2);
stack_push(&s, 3);
stack_push(&s, 4);
stack_push(&s, 5);
stack_push(&s, 6);
int nData;
stack_pop(&s, nData);
std::cout << "弹出的元素为:" << nData << std::endl;
stack_push(&s, 7);
show_stack(&s);
}
数据结构【静态栈】代码实现
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 链表定义 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链...
- 栈的定义: 栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行 从影响数据结构的...
- 一.简介 在哔哩哔哩看视频学的,赫斌老师数据结构入门的内容-b站搜索:av6159200(P33),通过学习,能独...
- A 静态数据区:内存在程序启动的时候才被分配,而且可能直到程序开始执行的时候才被初始化,如函数中的静态变量就是...
- /** * 用不带头结点的单链表构造的链式栈 * LinkedStack * 创建人:guxiaohao * 时间...