//Sorry,看来我理解错了,这是改后的》》》》》》》》
//顺序栈>>>>>>>>>>>>>>>
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef struct
{
int data[MAXSIZE];
int top;
}SqStack;
void PushStack(SqStack *S,int x) //入栈
{
if(S->top==MAXSIZE-1) printf("栈已满,不能入栈!
");
else
}
void PopStack(SqStack *S) //退栈
{
if(S->top==-1) printf("栈为空,不能出栈!
");
else
}
int GetStackTop(SqStack S) //取栈顶元素
{
return S.data[S.top];
}
main()
{
int x,i;
SqStack myStack;
myStack.top=-1;
do
{
printf("请选择你需要的操作:
1.置空栈.
2.进栈.
3.退栈.
4.取栈顶元素.
5.退出程序.
(请输入1或2或3或4或5):");
scanf("%d",&i);
switch(i)
{
case 1:myStack.top=-1;printf("栈已置空!
");break;
case 2:printf("请输入你要进栈的元素:");
scanf("%d",&x);
PushStack(&myStack,x);break;
case 3:PopStack(&myStack);break;
case 4:if(myStack.top!=-1) printf("栈顶元素是 %d.
",GetStackTop(myStack));
else printf("栈为空,没有元素!
");break;
case 5:break;
default:printf("选择错误,请重新输入!
");break;
}
}while(i!=5);
return 0;
}
//链栈>>>>>>>>>>>>
#include<stdio.h>
#include<stdlib.h>
typedef struct SNode
{
int data;
struct SNode *next;
}SNode,*LinkStack;
LinkStack top;
LinkStack PushStack(LinkStack top,int x) //入栈
{
LinkStack s;
s=(LinkStack)malloc(sizeof(SNode));
s->data=x;
s->next=top;
top=s;
return top;
}
LinkStack PopStack(LinkStack top) //退栈
{
LinkStack p;
if(top!=NULL)
{
p=top;
top=top->next;
free(p);
printf("退栈已完成
");
return top;
}
else printf("栈是空的,无法退栈!
"); return 0;
}
int GetStackTop(LinkStack top) //取栈顶元素
{
return top->data;
}
main()
{
int i,x;
do
{
printf("请选择你需要的操作:
1.置空栈.
2.进栈.
3.退栈.
4.取栈顶元素.
5.退出程序.
(请输入1或2或3或4或5):");
scanf("%d",&i);
switch(i)
{
case 1:top=NULL;break;
case 2:printf("请输入你要进栈的元素:");
scanf("%d",&x);
top=PushStack(top,x);
printf("进栈已完成!
");break;
case 3:top=PopStack(top);break;
case 4:if(top!=NULL) printf("栈顶元素是:%d!
",GetStackTop(top));
else printf("栈是空的,没有元素!
");break;
case 5:break;
default:printf("选择错误,请重新输入!
");break;
}
}while(i!=5);
return 0;
}
void main()
{
struct StackSq S;
InitStack(&S,100);
Push(&S,1);
}
栈的表示与实现的主函数
表示: ┌──┐ 由于画图太不方便,现描述如下:图代表的是一维数组,下面为栈底,也是下 top→ │ │ 标最小的值,上面top为栈顶,而不一定是数组的最大的下标。├──┤ base → │ │ └──┘ 主函数:是指实现调用栈实现建立、插入、删除等操作的main()吗?你需要的...
数据结构—栈(Stack)的原理以及Java实现以及后缀表达式的运算
4.2 栈的链式存储结构的简单实现\/***链栈的简单实现*\/publicclassMyLinkedStack<E>{\/***空构造器*\/publicMyLinkedStack(){}\/***元素个数*\/privateintsize;\/***指向头结点的引用,同时也是指向栈顶的引用*\/privateNode<E>first;\/***链栈内部的节点*\/privatestaticclassNode<E>{\/\/下一个结点的引用Node<E>...
看动画学算法之:栈stack
使用链表来实现除了使用数组,我们还可以使用链表来创建栈。使用链表的时候,我们只需要对链表的head节点进行操作即可。插入和删除都是处理的head节点。publicclassLinkedListStack{privateNodeheadNode;classNode{intdata;Nodenext;\/\/Node的构造函数Node(intd){data=d;}}publicvoidpush(intdata){if(headNode...
栈的表示方法有哪些?
表示顺序栈的数组下标如果从0开始,栈空的条件是top==-1,栈满的条件是top==maxsize-1;如果从1开始,top==1表示栈空,top==maxsize表示栈满。栈的元素依次存放在一个一维数组中。下标小的一端作为栈底。用一个变量记录栈顶位置,称“栈顶指针”。
计算机中什么是栈是怎么理解的?
你可以使用 lua_checkstack 这个函数来扩大可用堆栈的尺寸。4.无论何时 Lu a 调用 C , 它都只保证至少有 LUA_MINSTACK 这么多的堆栈空间可以使用。 LUA_MINSTACK 一般被定义为 20 , 因此,只要你不是不断的把数据压栈, 通常你不用关心堆栈大小。5.当你调用一个 Lua 函数却没有指定要接收...
基本运算的栈的定义及基本运算
(1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。(2)当表中没有元素时称为空栈。(3)栈为后进先出(LastInFirstOut)的线性表,简称为LIFO表。栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中最新的元素,即最后插入(进栈)的元素,而最先插入的是...
计算机二级ms office选择题带答案
B)栈顶元素一定是最先入栈的元素 C)栈操作遵循先进后出的原则 D)以上说法均错误 4.在关系数据库中,用来表示实体问联系的是()。A)属性 B)二维表 C)网状结构 D)树状结构 5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是()。A)...
c++的“栈”是什么啊?
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。栈可以用来在函数调用的时候存储断点,做递归...
一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc
栈与堆的理解单片机启动文件中定义的Stack_Size表示栈的大小,主要用于存储函数参数、局部变量,以及RTOS的现场保护等,不能超过1K。堆则是malloc动态分配的空间,大小通常较小,如STM32F103的0x00000200,意味着最大分配内存不超过512字节。内存管理的挑战malloc在单片机中受限于内存碎片问题。内存碎片是指分配...
栈和线性表类似,有两种实现方法,即什么实现和什么实现
(2)抽象数据类型的表示与实现:它可通过固有数据类型来表示和实现。即利用处理器已存的数据类型来说明新的结构,用已经实现的操作来组合新的操作。