dataStructure->Stack

数据结构之堆栈

1
2
3
4
5
6
7
8
9
10
11
12
typedef struct dataStruct
{
elemType *LinkList;
elemType *Stack;
elemType *Queue;
elemType *String;
elemType *Array;
elemType *Tree;
elemType *Graph;
elemType *Indexing;
elemType *Sorting;
}* dataStructure;

堆栈定义

堆栈我在早年学习微机原理的时候就已接触过。在对寄存器操作的时候,为了避免某些指令对寄存器中原先的值产生影响,在执行指令前,要进行入栈push操作,会将某些寄存器的值push到内存中,执行指令之后,执行出栈pop操作,主要作用就是现场保护与现场恢复。

堆栈有一个最重要的特点就是先进后出,也就是指针始终指向栈顶。

顺序栈

结构定义

1
2
3
4
5
6
7
typedef struct
{
Elemtype *elem; //数组
int top; //栈顶指针(或者是下标
int size; //容量
int incrementsize; //预留增容
} SqStack;

初始化

1
2
3
SqStack st1;
st1.top = -1 // -1表示空栈
st1.size = 100; // 栈容量100

入栈

1
st1.elem[++top] = elem; //++先自加

出栈

1
return st1.elem[top--] ;

多栈共享邻接空间

定义:即两个栈栈底位置为两端,两个栈顶在中间不断变化,由两边往中间延伸。

1
2
3
4
5
typedef struct
{
ElemType stack[StackSize];
int top1,top2;
}SqStack_Du;

入栈的时候选择从左(top1)还是从右(top2)

链栈

看看定义就明白了,链表和栈合二为一

定义

1
2
3
4
5
6
7
8
9
10
11
typedef struct node
{
Elemtype data;
node *next;
}stackNode, *pstackNode;

typedef struct linkStack
{
pstackNode top;
int count;
}

好处是不受固定长度限制,随用随取。

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×