定义栈的数据结构php 定义栈的数据结构,要求添加一个min函数

请问,栈是属于什么结构,有什么特征?

栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线形表。

为长岛等地区用户提供了全套网页设计制作服务,及长岛网站建设行业解决方案。主营业务为成都做网站、成都网站设计、长岛网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

栈是一种数据结构,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后一件一件往堆。取走时,只能从上面一件一件取。堆和取都在顶部进行,底部一般是不动的。

栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一堆称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP)。 栈也称为后进先出表(LIFO表)。

1、进栈(PUSH)算法

①若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②);

②置TOP=TOP+1(栈指针加1,指向进栈地址);

③S(TOP)=X,结束(X为新进栈的元素);

2、退栈(POP)算法

①若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作②);

②X=S(SOP),(退栈后的元素赋给X);

③TOP=TOP-1,结束(栈指针减1,指向栈顶)。

数据结构,有关栈的定义问题

/*

你看看这个例子吧

*/

# include "stdio.h"

# include "stdlib.h"

# define STACK_INIT_SIZE 10/*存储空间初始分配量,为了突出stackincrement有用 

此处改小点为10(没有分号)*/

# define stackincrement 10/*存储空间分配增量,因为是顺序存储结构

一次分配固定的内存,本题是100个,而不是

动态分配存储空间,所以需要定义一个增量*/

typedef int SElemType;

typedef struct

{

SElemType *base;//栈底指针,栈构造之前和销毁之后,其值为NULL

SElemType *top;//栈顶指针

int stacksize;//当前已经分配的存储空间,以元素为单位

}SqStack;

void print(SElemType c)

{

printf("%d ",c);

}

//构造一个空栈S

void InitStack(SqStack * S)

{

if (! ((* S).base = (SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType))))//一次分配10个int类型的空间

{

exit(-1);

}

(* S).top = (* S).base;

(* S).stacksize = STACK_INIT_SIZE;

}

//将元素e插入栈顶

void Push(SqStack * S,SElemType e)

{

if ((* S).top-(* S).base = (* S).stacksize)//栈满,利用realloc增加存储空间每次增加stackincrement个int类型空间

{

(* S).base = (SElemType *)realloc((* S).base,((* S).stacksize+stackincrement)*sizeof(SElemType));

if (!(* S).base)

{

exit (-1);

}

(* S).top = (* S).base + (* S).stacksize;

(* S).stacksize = (* S).stacksize + stackincrement;

}

*((* S).top)++ = e;

}

//从栈底到栈顶依次对栈中每个元素调用函数visit

void StackTraverse(SqStack S,void (* visit)(SElemType))

{

while (S.top  S.base)

{

visit(*(S.base)++);

}

printf("\n");

}

int main(void)

{

int j;

SqStack s;

SElemType e;

InitStack(s);

printf("初始化后栈s的空间为%d\n",s.stacksize);

for (j=1; j=12; ++j)

{

Push(s,j);

}

printf("操作完后,栈s的空间为%d\n",s.stacksize);/*第一次只分配了10个空间

但需要压入12个元素

所以需要增加stacksize个*/

printf("栈中的元素为:");

StackTraverse(s,print);

return 0;

}

/*

在vc++6.0中的输出结果:

------------------------

初始化后栈s的空间为10

操作完后,栈s的空间为20

栈中的元素为:1 2 3 4 5 6 7 8 9 10 11 12

------------------------------

*/

数据结构 定义一个栈是这样定义的吗?帮忙解读一下

BiTree是一个自定义类型

Stack是这个类型的一个数组

中括号里面应该是一个宏

后面的p是另外一个变量

类型一样是BiTree

简单的说,这个定义就是一个数组,看不出来是不是栈


网站栏目:定义栈的数据结构php 定义栈的数据结构,要求添加一个min函数
网页网址:http://azwzsj.com/article/hieeeo.html